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)
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
insideselect
查找以特定字符串开头的所有列
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开头))
很容易理解。