如何根据特定列中的值汇总R中的数据

时间:2017-06-16 12:26:34

标签: r dataframe data.table

我的数据框如下

problem

每个HH在一列中正好重复3次。我有数百万这样的总记录

我想在一行中汇总每个HH值的数据,并删除该HH的剩余两行。

对于列A - 采用每个HH的值的模式,将其放在一行中。 对于每个HH的值的列B-取模式,将其放在一行中。 对于C列 - 取每个HH的平均值,将其排成一行。 对于列D - 采用每个HH的值的模式,将其放在一行。

我需要为我的数据框中的数千个HH值执行此操作。

输出:

enter image description here

谢谢

1 个答案:

答案 0 :(得分:0)

该代码可能效率不高,但它适用于您的样本。

Problem<-matrix(c(123,0,2,16,0,123,1,3,15,1,123,1,2,14,0,456,0,2,12,1,456,0,2,18,0,456,0,2,24,0),nrow=6,ncol=5,byrow=TRUE)
colnames(Problem)<-c("HH","A","B","C","D")
Problem<-split(Problem,Problem[,1])

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
Result<-matrix(NA,nrow=length(Problem),ncol=5)
for (i in 1:length(Problem)){
Result[i,]<-c(sum(Problem[[i]][1:3])/3,Mode(Problem[[i]][4:6]),Mode(Problem[[i]][7:9]),mean(Problem[[i]][10:12]),Mode(Problem[[i]][13:15]))}