r - R 中的分组列和求和值

标签 r

我有一个如下所示的数据集

Variable    A1  A2  A3  B1  B2  B3  
Item 1  Men 1   3   3   1   2   3
Item 2  Men 1   3   3   1   2   3
Item 1  Men 1   3   3   1   2   3   
Item 3  Men 2   1   2   5   3   3
Item 2  Men 1   3   3   1   2   3

我需要将列A1、A2、A3分组为A,将B1,B2,B3分组为B,此后我想对这些值进行求和。

如何在 R 中执行此操作?

最佳答案

如果您只需对几个变量执行此操作,您可以这样做:

df$A <- rowSums(df[grep("^A\\d+$", names(df))])
df$B <- rowSums(df[grep("^B\\d+$", names(df))])
df[!names(df) %in% grep("^[A-Z]{1}\\d+$", names(df), value = TRUE)]
df
#  Variable Sex A  B
#1   Item_1 Men 7  6
#2   Item_2 Men 7  6
#3   Item_1 Men 7  6
#4   Item_3 Men 5 11
#5   Item_2 Men 7  6

(我将“MEN”列称为 Sex,因为列名似乎太少了)。

我上面写的grep()命令使用正则表达式。例如,"^A\\d+$" 匹配以“A”开头后跟任意位数的列名称。 grep 命令返回找到这些匹配项的索引(在列名称中),因此 rowSums 只会将正确的列相加。

第三行使用了一个非常相似的概念来删除具有以下格式的列:任何单个大写字母(A到Z)后跟任意数量的数字,都将被删除。

关于r - R 中的分组列和求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27361550/

相关文章:

r - 多次堆叠现有的 RasterStack

r - 如何在 R 中将分布拟合到样本数据?

r - 在 ggplot2 中对多个变量进行排序

r - 使用 RPostgreSQL 从 R 中的数据框创建临时表

r - 按行比较矩阵与向量中的元素

roxygen2:即使在使用 @export 后,函数也不会导出到 NAMESPACE

r - 确保长数字保留在 CSV 输出中

python - 使用 R/python 和 SSD 进行数据分析

string - 如何将多个字符列组合成 R 数据框中的单个列

r - 导入不带行分隔符的固定宽度数据文件