如何找到一个列的平均值,其中data note.table的条目不是-1?列的名称存储在变量中。以及如何将获得的平均值分配为条目为-1的值。数据的相应代码。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)))
尝试使用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
仅使用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]