r-组合填充了不同列的行

  • 本文关键字:组合 填充 r data-cleaning
  • 更新时间 :
  • 英文 :


有没有一个特定的R函数可以用来实现以下功能?我试过使用聚集,但不太一样。

df3 <-data.frame(ID=c(1,1,2,2), ID2= c(11,11,22,21), ID3=c(22,22,33,33), b =c(5,0,0,0), c=c(0,0, 3,0), d=c(0L,3,0,4))
df3
#  ID ID2 ID3 b c d  
#1  1  11  22 5 0 0
#2  1  11  22 0 0 3
#3  2  22  33 0 3 0
#4  2  21  33 0 0 4

after_df3 <- data.frame(ID1=c(1,2,2), ID2=c(11,22,21), ID3=c(22,33,33), b=c(5,0,0), c=c(0,3,0), d=c(3,0,4))
after_df3
#   ID1 ID2 ID3 b c d
#1   1  11  22 5 0 3
#2   2  22  33 0 3 0
#3   2  21  33 0 0 4

我们可以从base R 使用aggregate

dfN <- aggregate(.~ID, df3, sum)
dfN
#  ID b c d
#1  1 5 0 3
#2  2 0 3 4

或使用data.table

library(data.table)
dfN1 <- setDT(df3)[, lapply(.SD, sum), by = ID]
dfN1

更新

使用新的数据集

aggregate(.~ID+ID2+ID3, df3, sum)
#  ID ID2 ID3 b c d
#1  1  11  22 5 0 3
#2  2  21  33 0 0 4
#3  2  22  33 0 3 0

或使用data.table

setDT(df3)[,lapply(.SD, sum) ,.(ID, ID2, ID3)]

最新更新