R data.table使用i语句中的中位数

时间:2015-11-17 23:15:48

标签: r data.table

这是在i语句中使用max()函数过滤data.table:R data.table using max in i statement

的问题的变体。

现在我试图弄清楚如何在相同的情况下使用median()函数。这是我的代码返回每一行:

> test_dt <- data.table(value1 = 1:10, value2 = 2:11, value3 = 3:12)
> test_dt[median(c(value1, value2, value3)) < 7]
    value1 value2 value3
 1:      1      2      3
 2:      2      3      4
 3:      3      4      5
 4:      4      5      6
 5:      5      6      7
 6:      6      7      8
 7:      7      8      9
 8:      8      9     10
 9:      9     10     11
10:     10     11     12

如果中位数()函数分别在每一行上运行,我希望得到的结果是:

   value1 value2 value3
1:      1      2      3
2:      2      3      4
3:      3      4      5
4:      4      5      6
5:      5      6      7
6:      6      7      8

1 个答案:

答案 0 :(得分:1)

这是一个使用data.table :: transpose(两次,因此它不是非旋转)的解决方案:

test_dt[transpose(transpose(test_dt)[,lapply(.SD,median)])[[1]] <7]