使用 R [关闭] 计算 data.frame 中存在的 NA 值的平均值

Posted

技术标签:

【中文标题】使用 R [关闭] 计算 data.frame 中存在的 NA 值的平均值【英文标题】:Calculating mean with NA value present in a data.frame using R [closed] 【发布时间】:2021-12-27 17:51:34 【问题描述】:

我有一个 data.frame,想对存在 NA 的列进行平均。

在执行计算时,我注意到 R 无法计算平均值,因此返回 NA。

OBS:我无法删除带有 NA 的行,因为它会删除具有我感兴趣的值的其他列。

df1<-read.table(text="st    date    ph
1   01/02/2004  5
16  01/02/2004  6
2   01/02/2004  8
2   01/02/2004  8
2   01/02/2004  8
16  01/02/2004  6
1   01/02/2004  NA
1   01/02/2004  5
16  01/02/2004  NA
", sep="", header=TRUE)

df2<-df1%>%
 group_by(st, date)%>%
  summarise(ph=mean(ph))

View(df2)

出来

我的期望是这样的结果:

【问题讨论】:

mean中默认使用mean(ph, na.rm = TRUE)na.rm = FALSE 这能回答你的问题吗? What does na.rm=TRUE actually means? 【参考方案1】:

你需要使用na.rm = TRUE:

df2<-df1%>%
  group_by(st, date)%>%
  summarise(ph=mean(ph, na.rm = TRUE))

df2
# A tibble: 3 x 3
# Groups:   st [3]
     st date          ph
  <int> <chr>      <dbl>
1     1 01/02/2004     5
2     2 01/02/2004     8
3    16 01/02/2004     6

【讨论】:

以上是关于使用 R [关闭] 计算 data.frame 中存在的 NA 值的平均值的主要内容,如果未能解决你的问题,请参考以下文章

使用向量来索引 R 中的 data.frame

使用 data.frame 中的上方行和另一列计算值

如何从r中的列联表中获取带有案例的data.frame?

R循环使用列表中的data.frame的函数

为data.frame中的多个变量按组计算平均值和标准差

使用 R 有效地计算列中单词列表的出现次数