使用 dplyr 在选定列上添加具有行方式平均值的列
add column with row wise mean over selected columns using dplyr
我有一个数据框,其中包含几个在不同时间点测量的变量(例如,test1_tp1
、test1_tp2
、test1_tp3
、test2_tp1
、test2_tp2
,...).
我现在正在尝试使用 dplyr
向数据框添加一个新列,该列计算这些列的 selection 的行方式平均值(例如,所有时间点的平均值test1
).
- 我什至对计算显式命名列的平均值的语法都感到困惑。我尝试没有成功的是:
data %>% ... %>% mutate(test1_mean = mean(test1_tp1, test1_tp2, test1_tp3, na.rm = TRUE)
- 我还想使用 regex/wildcards 来 select 列名,所以像
data %>% ... %>% mutate(test1_mean = mean(matches("test1_.*"), na.rm = TRUE)
不是 dplyr
解决方案,但您可以尝试:
cols_2sum <- grepl('test1',colnames(data))
rowMeans(data[,cols_2sum])
以下是在 dplyr 中的操作方法 - 我以虹膜数据为例:
iris %>% mutate(sum.Sepal = rowSums(.[grep("^Sepal", names(.))]))
这将计算以 "Sepal" 开头的所有列的行总和。您可以使用 rowMeans
代替 rowSums
以同样的方式。
您可以在 select
中使用 starts_with
来查找以特定字符串开头的所有列。
data %>%
mutate(test1 = select(., starts_with("test1_")) %>%
rowMeans(na.rm = TRUE))
我有一个数据框,其中包含几个在不同时间点测量的变量(例如,test1_tp1
、test1_tp2
、test1_tp3
、test2_tp1
、test2_tp2
,...).
我现在正在尝试使用 dplyr
向数据框添加一个新列,该列计算这些列的 selection 的行方式平均值(例如,所有时间点的平均值test1
).
- 我什至对计算显式命名列的平均值的语法都感到困惑。我尝试没有成功的是:
data %>% ... %>% mutate(test1_mean = mean(test1_tp1, test1_tp2, test1_tp3, na.rm = TRUE)
- 我还想使用 regex/wildcards 来 select 列名,所以像
data %>% ... %>% mutate(test1_mean = mean(matches("test1_.*"), na.rm = TRUE)
不是 dplyr
解决方案,但您可以尝试:
cols_2sum <- grepl('test1',colnames(data))
rowMeans(data[,cols_2sum])
以下是在 dplyr 中的操作方法 - 我以虹膜数据为例:
iris %>% mutate(sum.Sepal = rowSums(.[grep("^Sepal", names(.))]))
这将计算以 "Sepal" 开头的所有列的行总和。您可以使用 rowMeans
代替 rowSums
以同样的方式。
您可以在 select
中使用 starts_with
来查找以特定字符串开头的所有列。
data %>%
mutate(test1 = select(., starts_with("test1_")) %>%
rowMeans(na.rm = TRUE))