我有一个data.frame,由33个变量组成,有254万个观测值。我创建了一个简单的data.frame,我将从中解释我的问题。
testdf
borrower amount income
1 a 4000 30000
2 b 5000 20000
3 a 3000 30000
str(testdf)
'data.frame': 3 obs. of 3 variables:
$ borrower: Factor w/ 2 levels "a","b": 1 2 1
$ amount : num 4000 20000 3000
$ income : num 30000 20000 30000
我想要的是,如果变量amount
相同,则将变量borrower
求和。但是,对于变量income
,不能这样做。在此之后,必须删除副本。因此,在这种情况下,必须删除第3行。新的df必须如下所示:
testdf
borrower amount income
a 7000 30000
b 5000 20000
变量borrower
(例如a)中的值也可能出现8次。在这个问题上,我想再次总结8 amounts
s,而不是income
。并使用。
答案 0 :(得分:0)
以下是plyr
的解决方案:
testdf <- data.frame(borrower = c("a", "b", "a"),
amount = c(4000, 5000, 3000),
income = c(30000, 20000, 30000))
library(plyr)
ddply(testdf, .(borrower), summarise, amount = sum(amount), income = income[1])
# borrower amount income
# 1 a 7000 30000
# 2 b 5000 20000