首页 > 解决方案 > (R) 行求和的替代方式,具有相似名称的多个列

问题描述

所以,我不知道标题是否易于理解,但基本上我想将其更改为尽可能少的代码:

data %>% 
group_by(name) %>%
mutate(
    plataforma.3DS = sum(plataforma.3DS),
    plataforma.PS3 = sum(plataforma.PS3),
    plataforma.PS4 = sum(plataforma.PS4),
    plataforma.PSP = sum(plataforma.PSP),
    plataforma.PSV = sum(plataforma.PSV),
    plataforma.Wii = sum(plataforma.Wii),
    plataforma.WiiU = sum(plataforma.WiiU),
    plataforma.X360 = sum(plataforma.X360),
    plataforma.XOne = sum(plataforma.XOne)   
)

我还有一些其他列需要执行此操作,那么如何减少我的代码?提前致谢。

标签: rdplyr

解决方案


我们可以用 指定它across。请注意,mutate将列值替换为该列的值sum

library(dplyr)
data %>%
   group_by(name) %>%
   mutate(across(starts_with('plataforma'), sum))

它的目的是为每列返回一个总和,mutatesummarise

data %>%
   group_by(name) %>%
   summarise(across(starts_with('plataforma'), sum), .groups = 'drop')

注意:标题指定了行总和,而 OP 帖子中显示的代码正在执行列总和。


推荐阅读