使用dplyr rowwise与列范围而不枚举列名

时间:2018-01-26 15:26:05

标签: r dplyr

是否可以参考'所有列'或rowwise()中与dplyr组合的一系列列,而无需枚举所有单个列名称?

例如,在下文中,我宁愿不指定前7个列名称中的每一个,而是说1:7或其他。似乎无法让它发挥作用。必须遗漏一些简单的东西。

mtcars %>%
  rowwise() %>%
  mutate(sillyMetric = mean(c(mpg, cyl, disp, hp, drat, wt, qsec))) %>%
  .$sillyMetric

请不要告诉我在这种情况下我不需要rowwise()。我显然有一个不同的问题,我试图解决它需要它。我想知道是否有办法不用rowwise枚举所有列名。 我想要更有效地计算上述sillyMetric的任何其他解决方案。

1 个答案:

答案 0 :(得分:2)

没有办法在行前排行。您可能需要退后一步,重新思考如何处理其余代码。能够基于行ID进行计算可能会产生丰硕成果。像这样:

mtcars %>%
  mutate(id = 1:n()) %>%
  gather(metric, val, 1:7) %>% 
  group_by(id) %>%
  summarise(SillyMetric = mean(val))

最糟糕的是,您可以单独执行此操作,然后使用左连接将其加入。