2017-10-05 5 views
-2

エントリがdata.tableの-1でない列の平均を見つける方法はありますか? 列の名前は変数に格納されます。また、得られた平均値をエントリーが-1である値として割り当てる方法もあります。 data.frameに対応するコードは次のとおりです。条件に基づいてdata.tableの列の平均を検索し、他の値をその平均で置き換えます。

col = "col_1" 
mean_value = df[ df[,col]!=-1, col ] 
df[ df[,col]==-1, col ] = mean_value 

サンプルデータ:

dt <- setDT(data.frame(col_1=c(-1,0,1,2,3))) 

答えて

2

get()eval()でこれを試してみてください:

require(data.table) 

mean_value <- mean(dt[get(col)!=-1,get(col)],na.rm=TRUE) 

dt[get(col)==-1,eval(col):=mean_value] 

出力:

col_1 
1: 1.5 
2: 0.0 
3: 1.0 
4: 2.0 
5: 3.0 
+0

おかげで、私はエントリの平均値を割り当てる方法data.table –

+0

でそれらを実行したい!= -1 ??? –

+0

@melwin_jose - 大丈夫、問題ありません。上記の編集を参照してください。 – www

0

を使用してちょうどD ata.table

dt <- setDT(data.frame(col_1=c(-1,0,1,2,3))) 
col = names(dt) 
mean_value<-dt [ ! .(-1), lapply(.SD,mean), .SDcols = col,on=col] 
dt[.(-1),(col):=mean_value,on=col] 
関連する問題