我有一个包含两列字符串的数据框
x <- data.frame(a = c("HH UH D", "L EH . M IH N", "EH K . S AE M . P EL"),
b = c("HH UH F", "L IY . V IH NG", "S AE M . P EL"))
我试图计算 column b,row 1 中的字符与 column a,row 1 中的字符匹配的次数,然后将 column b,row 2 与 column a,row 2 匹配,以此类推,然后将此计数作为一个新列相加,因此此计算的输出如下所示:
x <- data.frame(a = c("HH UH D", "L EH . M IH N", "EH K . S AE M . P EL"),
b = c("HH UH F", "L IY . V IH NG", "S AE M . P EL"),
c = c(2, 2, 5)) # HH and UH match, so 2
# L and IH match, so 2
# S, AE, M, P, and EL all match, so 5
我试过这样的方法:
a_characters <- str_split(x$a, " ")
b_characters <- str_split(x$b, " ")
stringcounting <- data.frame()
for (letter in b_characters){
count <- str_count(a_characters, letter)
sum_count <- sum(count)
stringcounting <- rbind(stringcounting, sum_count)
}
但这里的结果是:1,50,20而不是2,2,5(不知道为什么)。我想我的for循环出了问题,也可能是我把字符串拆分成字符的方式出了问题,但我不确定是什么问题。
2条答案
按热度按时间6ojccjat1#
我们可以在拆分字符串后删除
"."
,因为我们不想比较它,也不想使用%in%
和sum
计算匹配的字符串。ss2ws0br2#
下面是一个函数可以做到这一点: