r - 了解两个 aggregate() 语法如何处理包含 NA 值的数据框

标签 r aggregate na

<分区>

这里是一个数据框的例子。

    x3 <- read.table(text = "  id1 id2 val1 val2
1   a   x    1    9
2   a   x    2    4
3   a   y    3    NA
4   a   y    4    NA
5   b   x    1    NA
6   b   y    4    NA
7   b   x    3    9
8   b   y    2    8", header = TRUE)

aggregate(. ~ id1+id2, data = x3, FUN = mean) 返回:

  id1 id2 val1 val2
1   a   x  1.5  6.5
2   b   x  3.0  9.0
3   b   y  2.0  8.0

aggregate(x3[,3:4], by = list(x3$id1, x3$id2), FUN = mean, na.rm = TRUE) 返回:

  Group.1 Group.2 val1 val2
1       a       x  1.5  6.5
2       b       x  2.0  9.0
3       a       y  3.5  NaN
4       b       y  3.0  8.0

两种聚合语法不会返回相同数量的行。这是什么原因?

最佳答案

最好在 aggregate 的列表方法中使用 withcomplete.cases,以预先排除您可能尝试的缺失行。

with(x3[complete.cases(x3), ], aggregate(cbind(val1, val2), by=list(id1, id2), FUN=mean))
#   Group.1 Group.2 val1 val2
# 1       a       x  1.5  6.5
# 2       b       x  3.0  9.0
# 3       b       y  2.0  8.0

关于r - 了解两个 aggregate() 语法如何处理包含 NA 值的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62732112/

相关文章:

aggregate - CQRS 事件存储聚合与投影

mysql - 结果中 2 列的聚合

r - R 中的 For 循环在打印中返回 NA

r - 将结果写入foreach循环R内的文件

r - 针织 RMarkdown html_document 中的 Kable (kableExtra) 垂直滚动条?

r - 在 dplyr 中按组获取总和后计算列的行百分比

r - 如何正确地将NaN转换为NA

r - gganimate 条形图 : smooth transition when bar is replaced

r - 在 predict() 函数之后将预测值更改为响应比例,而不是通过 type = "response"

r - 获取非 NA 列表元素的索引和值