我正在尝试找到一种使用 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/