gpt4 book ai didi

r - R 中各列的平均值,不包括 NA

转载 作者:行者123 更新时间:2023-12-03 12:41:34 24 4
gpt4 key购买 nike

我无法想象我是第一个提出这个问题的人,但我还没有找到解决方案(在这里或其他地方)。

我有几列,我想在 R 中取平均值。唯一最棘手的方面是有些列包含 NA。

例如:

Trait Col1 Col2 Col3
DF 23 NA 23
DG 2 2 2
DH NA 9 9

我想创建一个 Col4 来平均前 3 列中的条目,忽略 NA。
所以:
 Trait Col1 Col2 Col3 Col4
DF 23 NA 23 23
DG 2 2 2 2
DH NA 9 9 9

理想情况下,这样的事情会起作用:
data$Col4 <- mean(data$Chr1, data$Chr2, data$Chr3, na.rm=TRUE)

但事实并非如此。

最佳答案

你要rowMeans()但重要的是要注意它有一个 na.rm要设置为 TRUE 的参数.例如。:

> mat <- matrix(c(23,2,NA,NA,2,9,23,2,9), ncol = 3)
> mat
[,1] [,2] [,3]
[1,] 23 NA 23
[2,] 2 2 2
[3,] NA 9 9
> rowMeans(mat)
[1] NA 2 NA
> rowMeans(mat, na.rm = TRUE)
[1] 23 2 9

要匹配您的示例:
> dat <- data.frame(Trait = c("DF","DG","DH"), mat)
> names(dat) <- c("Trait", paste0("Col", 1:3))
> dat
Trait Col1 Col2 Col3
1 DF 23 NA 23
2 DG 2 2 2
3 DH NA 9 9
> dat <- transform(dat, Col4 = rowMeans(dat[,-1], na.rm = TRUE))
> dat
Trait Col1 Col2 Col3 Col4
1 DF 23 NA 23 23
2 DG 2 2 2 2
3 DH NA 9 9 9

关于r - R 中各列的平均值,不包括 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com