【发布时间】:2015-06-24 22:33:03
【问题描述】:
为令人费解的标题道歉。本质上,我是在 R 中聚合一些数据。
df <- data.frame(value1=c(1,2,3,4,5,6,7,8,9,10),
+ value2=c(2,3,4,5,6,7,8,9,1,2),
+ group=c("a","b","a","b","a","b","a","b","a","c"))
DT <- as.data.table(df)
生成的数据如下所示:
value1 value2 group
1 2 a
2 3 b
3 4 a
4 5 b
5 6 a
6 7 b
7 8 a
8 9 b
9 1 a
10 2 c
我想使用 data.table 为具有最高 value2 的行的每一组找到 value1。
例如,上面的表格会变成:
new_val group
7 a
8 b
10 c
...因为 7 是 a 组中具有最大值 2 的行的 value1 的值,以此类推。
在创建具有许多分组操作的新数据表时,我很难做到这一点。
我目前使用的代码如下:
DT[,list(
rate_max_acct = max(value1(which.max(value2)))
),
by=group] -> DT2
这不起作用——我试图做的是为每个 froup 选择 value2 为最大值的行,然后为该组找到 value1 的最大值,但它不起作用并引发以下错误:
could not find function "value1"
很明显它认为我是在尝试应用一个函数,而不是在寻找一个对象。
这里的任何帮助将不胜感激,特别是如果我可以在这个列表中做到这一点——我正在一次做一堆分组操作,如果我能保留“xxx = yyy”语法,我会非常喜欢。
【问题讨论】:
-
您在变量上使用了
(,而不是value1(中的[。
标签: r data.table