根据条件和条件查找data.table列的平均值。用那个意思替换其他值

时间:2017-10-05 02:55:18

标签: r data.table

如何找到一个列的平均值,其中条目不是data.table的&t?t -1? 列的名称存储在变量中。另外,如何将获得的平均值指定为条目为-1的值。 data.frame的相应代码是:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

仅使用Data.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]