如何找到一个列的平均值,其中条目不是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)))
答案 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]