使用dplyr在所选列上添加具有行方式意义的列

时间:2015-01-26 21:33:15

标签: regex r dplyr

我有一个数据框,其中包含在不同时间点测量的几个变量(例如test1_tp1test1_tp2test1_tp3test2_tp1,{{1} },...)。

我现在正尝试使用test2_tp2向数据框添加新列,该数据框计算这些列的选择上的行方式(例如,dplyr的所有时间点的平均值)

  1. 我甚至在计算明确命名列的平均值的语法上也很困难。我没有成功的尝试是:
  2. test1

    1. 我还想使用正则表达式/通配符来选择列名,例如
    2. data %>% ... %>% mutate(test1_mean = mean(test1_tp1, test1_tp2, test1_tp3, na.rm = TRUE)

3 个答案:

答案 0 :(得分:7)

您可以使用starts_with内的select查找以某个字符串开头的所有列。

data %>%
  mutate(test1 = select(., starts_with("test1_")) %>%
           rowMeans(na.rm = TRUE))

答案 1 :(得分:3)

以下是如何在dplyr中执行此操作 - 我使用虹膜数据作为示例:

iris %>% mutate(sum.Sepal = rowSums(.[grep("^Sepal", names(.))]))

这计算以“Sepal”开头的所有列的行和。您可以以相同的方式使用rowMeans代替rowSums

答案 2 :(得分:0)

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

cols_2sum <- grepl('test1',colnames(data))
rowMeans(data[,cols_2sum])