r语言 - 根据条件查找 data.table 列的平均值,并用该平均值替换其他值



如何找到一个列的平均值,其中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]

最新更新