前提・実現したいこと
data.tableで複数列の代入を行いたい。
- year, id, deg, clo の4列から成るデータフレームdf_outputを作成。
※データテーブルを使いたかったので、変換。
- year, idは、予め必要な組み合わせを設定。
- deg, cloの2列に、算出した結果を代入したい。(df_outputには適当な値(-1)を置いた。)
- df_outputに算出結果deg_x, clo_xを代入したい。
※(year==2018)&(id==555)は、とりあえずの具体例。
degのみ(代入する列1つのみの場合)は、問題なく実行できている。
R
1df_output <- data.frame(code=eg$Var1, id=eg$Var2, deg=-1) 2df_output[(year==2018)&(id==555), deg:=deg_x]
よろしくお願い致します。
該当のソースコード
R
1install.packages("data.table") 2library(data.table) 3 4d <- read.csv(file='test.csv', header=T, sep=",", fileEncoding = "UTF-8") 5 6# year, id, deg, clo の4列から成るdf_outputを作成 7list_code <- unique(d$year) #年度 8list_id <- unique(d$id) #企業ID 9eg <- expand.grid(list_year, list_id) #year, idで重複あり組み合わせ 10df_output <- data.frame(code=eg$Var1, id=eg$Var2, deg=-1, clo=-1) #dataframe作成 #deg, cloが算出結果 11df_output <- data.table(df_output) 12 13#deg, cloの算出 14deg_x <- deg算出結果 15clo_x <- clo算出結果 16 17#data.tableへの代入 18df_output[(year==2018)&(id==555), deg:=deg_x, clo:=clo_x] 19
発生している問題・エラーメッセージ
`[.data.table`(df_output, (code == i_code) & (id == でエラー: Provide either by= or keyby= but not both
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。