在R中具有相同列名的矩阵行中的值求和

时间:2016-02-29 01:40:11

标签: r merge

我需要将这两个矩阵对应于(玩具)字数:

     a hope to victory win
[1,] 2    1  1       1   1

     a chance than win
[1,] 1      1    1   1

这个词是" a"出现了3次的总和,并且“#34; win"出现2次(每个矩阵一次),进入:

     a win chance hope than to victory
[1,] 3   2      1    1    1  1       1

其中同名列合并为一个包含总和的列。

     a hope to victory win different than 
[1,] 2    1  1       1   1         0    0 

其中第一个矩阵被保留,第二个矩阵附加在的末尾,只有唯一的列名,所有的行值都等于零。

1 个答案:

答案 0 :(得分:1)

因此,如果您将此数据存储在数据框中(这对于此类数据确实是推荐的),则该过程非常简单。

(我包括来自该格式的转换,包含任意数量的行):

转换:

newdf1 <- data.frame(Word = colnames(matrix1), Count = as.vector(t(matrix1)))
newdf2 <- data.frame(Word = colnames(matrix2), Count = as.vector(t(matrix2)))

现在你可以使用rbind + dplyr(或data.table)

dplyr解决方案:

library(dplyr)
df <- rbind(newdf1,newdf2)
result <- df %>% group_by(Word) %>% summarise(Count = sum(Count))

第二个问题的答案是相关的,

result2 <- rbind(newdf1,data.frame(Word = setdiff(newdf2$Word,newdf1$Word), Count = 0))

(data.table解决方案非常相似,但如果你是数据框和分组/重塑的新手,我建议使用dplyr)

(编辑第二个解决方案,以便它实际上为您提供了唯一的条目)