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