首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr在所选列上添加按行表示的列

问使用dplyr在所选列上添加按行表示的列
EN

Stack Overflow用户
提问于 2015-01-26 21:33:14
回答 3查看 3.2K关注 0票数 5

我有一个数据框架,其中包含在不同时间点测量的多个变量(例如,test1_tp1、test1_tp2、test1_tp3、test2_tp1、test2_tp2、.)。

现在,我正在尝试使用dplyr向数据框架中添加一个新列,该数据框架计算这些列中所选列的逐行平均值(例如,test1的所有时间点的平均值)。

  1. 我甚至在计算显式命名列的平均值的语法上挣扎。我试过但没有成功的是:

data %>% ... %>% mutate(test1_mean = mean(test1_tp1, test1_tp2, test1_tp3, na.rm = TRUE)

  1. 我还想使用regex/通配符来选择列名,比如

data %>% ... %>% mutate(test1_mean = mean(matches("test1_.*"), na.rm = TRUE)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-26 22:07:14

您可以使用starts_with在select中查找以特定字符串开头的所有列。

代码语言:javascript
复制
data %>%
  mutate(test1 = select(., starts_with("test1_")) %>%
           rowMeans(na.rm = TRUE))
票数 12
EN

Stack Overflow用户

发布于 2015-01-26 21:43:20

下面是如何在dplyr中这样做的--我以虹膜数据为例:

代码语言:javascript
复制
iris %>% mutate(sum.Sepal = rowSums(.[grep("^Sepal", names(.))]))

这将计算以"Sepal“开头的所有列的行和。您可以以同样的方式使用rowMeans而不是rowSums。

票数 3
EN

Stack Overflow用户

发布于 2015-01-26 21:42:07

不是dplyr解决方案,但您可以尝试:

代码语言:javascript
复制
cols_2sum <- grepl('test1',colnames(data))
rowMeans(data[,cols_2sum])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28159143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档