gpt4 book ai didi

r - 如何获得所选列的平均值(均值)

转载 作者:行者123 更新时间:2023-12-03 10:48:59 27 4
gpt4 key购买 nike

我想获取每一行某些列的平均值。

我有此数据:

w=c(5,6,7,8)
x=c(1,2,3,4)
y=c(1,2,3)
length(y)=4
z=data.frame(w,x,y)

哪个返回:
  w x  y
1 5 1 1
2 6 2 2
3 7 3 3
4 8 4 NA

我想获得某些专栏的意思,而不是全部。我的问题是我的数据中有很多NA。因此,如果我想要x和y的均值,这就是我想要得到的:
  w x  y mean
1 5 1 1 1
2 6 2 2 2
3 7 3 3 3
4 8 4 NA 4

我想我可以做类似 z$mean=(z$x+z$y)/2的操作,但y的最后一行是NA,因此显然我不希望计算NA,也不应该除以2。我尝试了 cumsum,但是当该行中只有一个NA时,它将返回NA。我想我正在寻找可以添加所选列,忽略NA的东西,获取不具有NA的所选列的数量并除以该数量。我尝试了“平均”和“平均”,完全陷入了困境。

ETA:还有一种方法可以为特定的列添加权重吗?

最佳答案

这里有些例子:

> z$mean <- rowMeans(subset(z, select = c(x, y)), na.rm = TRUE)
> z
w x y mean
1 5 1 1 1
2 6 2 2 2
3 7 3 3 3
4 8 4 NA 4

加权平均数
> z$y <- rev(z$y)
> z
w x y mean
1 5 1 NA 1
2 6 2 3 2
3 7 3 2 3
4 8 4 1 4
>
> weight <- c(1, 2) # x * 1/3 + y * 2/3
> z$wmean <- apply(subset(z, select = c(x, y)), 1, function(d) weighted.mean(d, weight, na.rm = TRUE))
> z
w x y mean wmean
1 5 1 NA 1 1.000000
2 6 2 3 2 2.666667
3 7 3 2 3 2.333333
4 8 4 1 4 2.000000

关于r - 如何获得所选列的平均值(均值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490485/

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