0
可能很简单。data.table SD which.mac与列名
我正在尝试使用R
data.table
的.SD
保留具有某个列的最大值的行。
这是我data.frame
:
set.seed(1)
dt <- data.frame(id=LETTERS[sample(26,100,replace=T)],value=rnorm(100),stringsAsFactors=F)
,这将是data.table
代码:
require(data.table)
dt <- setDT(df)[, .SD[which.max(value)],by=id]
工作正常。
现在假设我不知道是什么值列的名称,而是我通过它作为一个参数: value.name < - “值”
,所以我想this'd工作:
dt <- setDT(df)[, .SD[which.max(value.name)],by=id]
但它抛出的警告:
In which.max(value.name) : NAs introduced by coercion
,并返回一个空data.table
。
有什么想法?
尝试'setorderv(setDT(DF),value.name);独特(df,by =“id”,fromLast = TRUE)'。顺便说一句,像'df < - f(df)'覆盖你的df会造成一个恼人的例子,因为我们必须回到顶端并重新创建它来运行后续部分。另外,如果你要包装data.frame(),为什么你甚至使用data.table?你有没有注意到'setDF'函数呢? – Frank