我的数据框如下
每个HH在一列中正好重复3次。我有数百万这样的总记录
我想在一行中汇总每个HH值的数据,并删除该HH的剩余两行。
对于列A - 采用每个HH的值的模式,将其放在一行中。 对于每个HH的值的列B-取模式,将其放在一行中。 对于C列 - 取每个HH的平均值,将其排成一行。 对于列D - 采用每个HH的值的模式,将其放在一行。
我需要为我的数据框中的数千个HH值执行此操作。
输出:
谢谢
答案 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]))}