R 如何计算忽略NA的每列的平均值
表,data.frame 它有12列变量名和24行R 如何计算忽略NA的每列的平均值,r,data.table,mean,R,Data.table,Mean,表,data.frame 它有12列变量名和24行df 比如: 我想计算每列的平均值,同时忽略Na 例如: colMeans(df) 得到如下结果: Var1 Var2 Var3 Var4 Var12 3 6,5 4 3 3,66 我不希望在计算平均值时考虑NA 我尝试了一些方法,比如na.omit,!是.na,但我没有得到上面所述的预期结果。对于数据.tabledt,如下所示: dt Var1 Var2 Var3 Var4 Var12 1:
df
比如:
我想计算每列的平均值,同时忽略Na
例如:
colMeans(df)
得到如下结果:
Var1 Var2 Var3 Var4 Var12
3 6,5 4 3 3,66
我不希望在计算平均值时考虑NA
我尝试了一些方法,比如
na.omit
,!是.na
,但我没有得到上面所述的预期结果。对于数据.table
dt
,如下所示:
dt
Var1 Var2 Var3 Var4 Var12
1: 1 NA 2 3 4
2: 5 6 2 3 3
3: NA 7 8 NA 4
您只需使用lappy()
:
结果是:
Var1 Var2 Var3 Var4 Var12
1: 3 6.5 4 3 3.666667
colMeans(df,na.rm=TRUE)
是的,这很有效!Thanx很容易PYou可能想把它贴出来作为答案?平均数的计算是正确的,但是我怎么能在得到每个平均数上面的列名称时,像水平线一样得到它呢?不知道你的意思是什么。你能用预期的输出更新帖子吗?如果没有行的意思,你会如何对确切的东西进行语法分析?你可以使用dt[,apply(.SD,1,mean,na.rm=TRUE)]
出于某种原因,现在dt[,lapply(.SD,mean,na.rm=TRUE)]给我一个错误:在.subset(x,j)中出错:无效的下标类型“list”,但在我没有收到错误之前?哦,好的,我修复了它应该已转换回数据表
dt[, lapply(.SD, mean, na.rm = TRUE)]
Var1 Var2 Var3 Var4 Var12
1: 3 6.5 4 3 3.666667