根据条件查找data.table列的平均值并用该平均值替换其他值
问题描述:
如何查找条目不是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)))
答
与
和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
答
使用只有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]
谢谢,但我想在data.table上执行它们 –
如何为条目赋值!= -1 ??? –
@melwin_jose - 没关系,没问题;看到上面的编辑。 – www