2015-04-04 45 views
1

我有一个记录表中的R与合并列的信息,它看起来像如下评估使用散列或其它方法

ab cd ef 10 
ac bd fg 20 
abc cde efg 10 
ab cd ef 20 

在上述表中,第一行中的前三个列和第四排完全一样。我需要这两行结合起来,让

ab cd ef 30 

应该是什么在R.迭代实现这个每行每列可以做的工作是正确的做法,但实在是太慢了。我认为,我们需要像前三列散列在一起,但我不知道该怎么做,在R.

回答

1

你可以尝试用包dplyr

数据

df <- read.table(header= FALSE, text = " 
ab cd ef 10 
ac bd fg 20 
abc cde efg 10 
ab cd ef 20") 
以下

代码

library(dplyr) 
    group_by(df, V1, V2, V3) %>% 
     mutate(SUM = sum(V4)) %>% 
     distinct() 
    ## Source: local data frame [3 x 5] 
    ## Groups: V1, V2, V3 
    ## 
    ## V1 V2 V3 V4 SUM 
    ## 1 ab cd ef 10 30 
    ## 2 ac bd fg 20 20 
    ## 3 abc cde efg 10 10 
1

这是一个线lternative使用基础R和功能aggregate

数据

df <- read.table(header= FALSE, text = " 
ab cd ef 10 
ac bd fg 20 
abc cde efg 10 
ab cd ef 20") 

解决方案

> aggregate(V4 ~ ., data=df, sum) 
    V1 V2 V3 V4 
1 ab cd ef 30 
2 abc cde efg 10 
3 ac bd fg 20 

V4代表你将总结一栏内,.分组数据后(所有其余的列)。