Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用dplyr在选定列上添加行平均值的列_Regex_R_Dplyr - Fatal编程技术网

Regex 使用dplyr在选定列上添加行平均值的列

Regex 使用dplyr在选定列上添加行平均值的列,regex,r,dplyr,Regex,R,Dplyr,我有一个数据框,其中包含在不同时间点测量的几个变量(例如,test1\u tp1,test1\u tp2,test1\u tp3,test2\u tp1,test2\u tp2,…) 我现在正尝试使用dplyr向数据帧添加一个新列,该数据帧计算这些列的行平均值(例如,test1的所有时间点的平均值) 我甚至在计算显式命名列的平均值的语法方面也遇到了困难。我尝试过但没有成功的是: data%%>%…%%>%变异(test1\u mean=mean(test1\u tp1,test1\u tp2,t

我有一个数据框,其中包含在不同时间点测量的几个变量(例如,
test1\u tp1
test1\u tp2
test1\u tp3
test2\u tp1
test2\u tp2
,…)

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

  • 我甚至在计算显式命名列的平均值的语法方面也遇到了困难。我尝试过但没有成功的是:
  • data%%>%…%%>%变异(test1\u mean=mean(test1\u tp1,test1\u tp2,test1\u tp3,na.rm=TRUE)

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

  • data%%>%…%%>%变异(test1_mean=mean(匹配(“test1_.*”),na.rm=TRUE)
    不是
    dplyr
    解决方案,但您可以尝试:

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

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

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

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

    您可以使用
    start\u with
    inside
    select
    查找以特定字符串开头的所有列

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

    使用
    rowwise()
    如的答案中所述。感谢大家的精彩回答!所有这些答案都非常有用…由于我没有足够的声誉,我无法对您的答案进行投票,但只能选择一个作为解决方案,对不起!我强烈建议您了解。如果您的数据格式整齐,您会发现此类操作更容易为了记录,您可以演示如何使用
    rowwise
    mean
    而不是
    rowMeans
    ?我尝试过,但返回“rowMeans中的错误(,na.rm=TRUE):“x”必须是数字。可能使用
    data%>%mutate(,test\u mean=rowMean(select(,以(,test1开头))
    很容易理解。