首页 > 解决方案 > 按其他列选择数据表中的值

问题描述

我有一个data.table test

structure(list(id = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2), 
    measure = c("l1", "l2", "l3", "r1", "r2", "r3", "l1", "l2", 
    "l3", "l4", "r1", "r2", "r3"), side = c("l", "l", "l", "r", 
    "r", "r", "l", "l", "l", "l", "r", "r", "r"), Decide_val = c(120, 
    122, 125, 135, 133, 124, 150, 148, 144, 146, 140, 138, 133
    ), Col_1 = 1:13, Col_2 = 13:1), row.names = c(NA, -13L), class = c("data.table", 
"data.frame")) -> test

我想选择最后两个值idside然后像这样平均

test.two <- test[, lapply(.SD, function(x) mean(tail(x,2))),.SDcols = 4:6,by = list(id,side)]

test.two
   id side Decide_val Col_1 Col_2
1:  1    l      123.5   2.5  11.5
2:  1    r      128.5   5.5   8.5
3:  2    l      145.0   9.5   4.5
4:  2    r      135.5  12.5   1.5

最后,我想id保留最高的值,并根据输出Decide_Val执行此操作:Col_1Col_2Decide_val

   id side Decide_val Col_1 Col_2
2:  1    r      128.5   5.5   8.5
3:  2    l      145.0   9.5   4.5

标签: rdata.table

解决方案


推荐阅读