【发布时间】:2020-06-29 03:07:21
【问题描述】:
我有一个包含两列字符串的数据框
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"))
我正在尝试计算 b 列第 1 行 中的字符与 a 列第 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 循环出了点问题,也可能是我将字符串拆分为字符的方式,但我不确定是什么。
【问题讨论】: