r - 如何将transmute与grep功能结合起来?

标签 r dplyr

我正在尝试找到一种使用 rowSums() 创建带有变量的新表的方法。来自现有数据帧的函数。例如,我现有的数据框名为 'asn'我想总结变量标题中包含“2011”的所有变量的每一行的值。我想要一个只包含一个名为 asn_y2011 的列的新表其中包含使用包含“2011”的变量的每行的总和
数据

structure(list(row = 1:3, south_2010 = c(1L, 5L, 7L), south_2011 = c(4L, 
0L, 4L), south_2012 = c(5L, 8L, 6L), north_2010 = c(3L, 4L, 1L
), north_2011 = c(2L, 6L, 0L), north_2012 = c(1L, 1L, 2L)), class = "data.frame", row.names = c(NA, 
-3L))
现有'asn'数据框看起来像这样
row south_2010 south_2011 south_2012 north_2010 north_2011 north_2012
  1      1           4         5          3          2          1
  2      5           0         8          4          6          1
  3      7           4         6          1          0          2
我正在尝试使用以下功能:
asn %>%   
   transmute(asn_y2011 = rowSums(, grep("2011")))
得到这样的东西
row    asn_y2011
 1         6
 2         6
 3         4

最佳答案

继续使用您的代码,grep()应该像这样工作:

library(dplyr)

asn %>%
  transmute(row, asn_y2011 = rowSums(.[grep("2011", names(.))]))

#   row asn_y2011
# 1   1         6
# 2   2         6
# 3   3         4
或者您可以使用 整齐的选择c_across() :
asn %>%
  rowwise() %>% 
  transmute(row, asn_y2011 = sum(c_across(contains("2011")))) %>%
  ungroup()

关于r - 如何将transmute与grep功能结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63343182/

相关文章:

r - 根据列中的唯一值在 R 中聚合

r - 使用 dplyr 创建多功能描述表

r - 根据每行中的缺失值选择列

r - 使用 dplyr::case_when 进行整洁的评估编程

使用来自单独数据帧的值重命名列

python - 按第一列定义的间隔有效地平均第二列

python - 在 csv 中存储列表以在 r 中访问

R tmap,图例格式 - 在第一个图例键中显示单个值

从包含 R 中特定字符的字符串向量中删除条目

r - R 中特定值的计数器顺序