R 如何计算忽略NA的每列的平均值

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:

表,data.frame

它有12列变量名和24行
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