data.table
dt
に新しい列を作成する必要があります。この列には、data.frame
df
のデータが含まれます。次のように私のデータは次のとおりです。R内のdata.tableの代入で比較を使用
library(data.table)
df <- data.frame(letter = LETTERS[1:9], number = 1:9)
dt <- data.table(value = c(0.5, 2.5, 6, 8.5, 4.5, 1.6, 1.3, 7.8, 9.2))
、私はnumber
の最小より大きいまたは等しい値に対応するdf
からletter
が含まれていますvalue
の値に基づいてdt
にcol
と呼ばれる新しい列を作成したいですvalue
より。例を与えるために、カラムcol
の最初の行はdt
の最初の行に、1
のでA
(つまりA
に対応df
からnumber
カラムである)最小値よりも大きいか、0.5に等しいvalue
を含むべきです。私は次のコードを試しました:
dt[, col := df[which(value <= df[, 2])[1], 1]]
しかし、それはすべての行にA
を置きます。 A、C、F、I、E、B、B、H、およびNAの所望の出力を生成
setDF(dt)
for(i in 1:nrow(dt)) {
dt$col[i] <- as.character(df[which(dt$value[i] <= df[, 2])[1], 1])
}
を次のように私はこれはdata.frame
有する可能性。 data.table
でどうすればいいですか?
@Frank:野生の推測: 'df'は' data.frame() 'によって作成され、' letters'を 'factor'に強制するためです。 – Uwe
はい、そうです。私はこの例を修正した。 – Skumin
これは、 'dt [i、" col "] <-'に変更するとうまくいきます。 – Frank