相关疑难解决方法(0)

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

我想得到每行某些列的平均值.

我有这些数据:

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)
Run Code Online (Sandbox Code Playgroud)

哪个回报:

  w x  y
1 5 1  1
2 6 2  2
3 7 3  3
4 8 4 NA
Run Code Online (Sandbox Code Playgroud)

我想得到某些列的意思,而不是所有列.我的问题是我的数据中有很多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
Run Code Online (Sandbox Code Playgroud)

我想我可以做类似的事情,z$mean=(z$x+z$y)/2但y的最后一行是NA,所以很明显我不想计算NA,我不应该除以2.我试过cumsum但当该行中有一个NA时返回NAs.我想我正在寻找能够添加所选列的内容,忽略NAs,获取没有NA的所选列的数量并除以该数字.我试过??意思和平均而且完全难倒.

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

r

24
推荐指数
3
解决办法
11万
查看次数

整齐的行均值来自列子集

我想从数据框中的多个列中计算汇总变量。键入所有行名时这是可能的,但是我想使用starts_with()和类似的函数。即

df <- data.frame(A1 = rnorm(100, 0, 1),
                 A2 = rnorm(100, 0, 1),
                 A3 = rnorm(100, 0, 1),
                 B1 = rnorm(100, 0, 1),
                 B2 = rnorm(100, 0, 1))
Run Code Online (Sandbox Code Playgroud)

什么有效:

library(tidyverse)
df %>% mutate(A = (A1 + A2 + A3)/3)
df %>% mutate(A = rowMeans(select(., A1:A3)))
Run Code Online (Sandbox Code Playgroud)

但是,前者在汇总许多变量时会很烦人,而后者在汇总许多行时会很快变得非常慢。我怀疑必须有一个更快的解决方案。

什么不起作用:

df %>% mutate(A = mean(A1:A3))
df %>% group_by(row_number()) %>% mutate(A = mean(A1:A3))
df %>% group_by(row_number()) %>% mutate(A = mean(starts_with("A")))
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:是否有一种方法可以在mutate()中使用mean()等来计算行均值,理想情况下不必拼出每个变量?

row r tidyverse

4
推荐指数
1
解决办法
360
查看次数

标签 统计

r ×2

row ×1

tidyverse ×1