dplyr的删除函数?计算R中数据帧中几列的平均值

问题描述:

我想计算我数据框中几列的平均值。我想使用dplyr包中的':'来选择它们。变量名称是:Mcheck5_1_1,Mcheck5_2_1,...,Mcheck5_8_1(所以共有8个)。我了解到,我可以dplyr的删除函数?计算R中数据帧中几列的平均值

select(df, Mcheck5_1_1:Mcheck5_8_1) 

在4min33sec由Roger庞(https://www.youtube.com/watch?v=aywFompr1F4&feature=youtu.be)讲授的在线课程选择。

然而,R抱怨:

Error in select(df, Mcheck5_1_1:Mcheck5_8_1) : 
unused argument (Mcheck5_1_1:Mcheck5_8_1) 

我也找不到使用这个别人的“:”在谷歌的功能。我怀疑这个功能不再存在?

现在,我使用下面的代码来解决这个问题:

idx = grep("Mcheck5_1_1", names(df)) 
df$avg = rowMeans(df[, idx:idx+7], na.rm = TRUE) 

(我毫不犹豫地使用索引号(例如,DF这些列[138]),因为担心其积极可能会有所不同)

但是,我认为这个解决方案不够优雅。你会建议我有没有其他方法可以做到这一点?现在是否仍然可以使用冒号(:)方法为我的变量编制索引,这只是我在代码中犯了一些错误?谢谢大家。

https://www.youtube.com/watch?v=aywFompr1F4&feature=youtu.be

(在4:33)

尝试dplyr::select(df, Mcheck5_1_1:Mcheck5_8_1)。这可能是一揽子冲突。有关相关问题,请参见here

计算平均为每个列:

library(magrittr) 
library(purrr) 
df %>% 
dplyr::select(Mcheck5_1_1:Mcheck5_8_1) %>% 
map(mean) 
+0

顺便说一句,因为dplyr现在从软件包magrittr中导入了%>%,所以您可能需要使用它。欲了解更多信息,请参阅https://*.com/questions/23621209/differences-between-dplyr-and-magrittr – JetLag

也许使用contains可以帮助,因为它是用来执行在列的名称搜索,所以在你的情况将是:select(df, contains("Mcheck5_"))

+0

你的回答也帮了不少忙。谢谢! – JetLag