聚合数据框中的列

时间:2017-12-08 00:06:43

标签: r dplyr data.table

nextNote

获取平均值我使用了以下命令

df1 <- read.table(text = "V1    V2
    21140 -2
    21140  0
    21140  2
    21140 -1
     3878  0
     3878  1
     3878  2
   20434  -1
   20434   2
   20434   1", header = TRUE)

现在我想要以下结果

条件:如果相应V1的V2值为负,则选择该值,否则使用最大正值

sample.test.final <- df1[,list(V2 = mean(V2)), by = c("V1")] 

1 个答案:

答案 0 :(得分:2)

只需使用if/else条件检查来汇总列:

df1[, .(V2 = if(all(V2 >= 0)) max(V2) else V2[V2 < 0]), V1]

#      V1 V2
#1: 21140 -2
#2: 21140 -1
#3:  3878  2
#4: 20434 -1

注意如果有的话,这会将所有负值保留在V2中。