我有一张记录表,如下所示
ab cd ef 10
ac bd fg 20
abc cde efg 10
ab cd ef 20
在上表中,第一行和第四行中的前三列完全相同。我需要将这两行组合在一起,以获得
ab cd ef 30
在R中实现这一点的正确方法应该是什么。迭代每一行和每一行都能完成这项任务,但速度太慢了。我想我们需要像前三列一样哈希,但我不知道如何在R中进行。
答案 0 :(得分: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 :(得分:1)
这是使用基数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
表示在您按.
(所有其余列)分组数据后要汇总的列。