我需要将这两个矩阵对应于(玩具)字数:
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
其中第一个矩阵被保留,第二个矩阵附加在但的末尾,只有唯一的列名,所有的行值都等于零。
答案 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)
(编辑第二个解决方案,以便它实际上为您提供了唯一的条目)