【发布时间】:2020-05-24 10:22:38
【问题描述】:
数据
我们有许多看起来像这样的文本字符串(在我们的真实数据集中更长):
df <- data.frame(
id = c('text1','text2','text3'),text = c('ABA','ABA','AAA')
)
>df
id text
1 text1 ABA
2 text2 ABA
3 text3 AAA
我们想要创建一个矩阵来告诉我们在位置 x 的一个字母与其他位置的其他字母一起被找到的频率,所以在这种情况下:
3A 3 1 2 3
2B 2 0 2 2
2A 1 1 0 1
1A 3 1 2 3
1A 2A 2B 3A
我尝试了什么
我之前将矩阵转换为二进制矩阵,如下所示:
structure(list(pos1_A = c(1, 1, 1), pos2_A = c(0, 0, 1), pos2_B = c(1,
1, 0), pos3_A = c(1, 1, 1)), class = "data.frame", row.names = c("text1",
"text2", "text3"))
pos1_A pos2_A pos2_B pos3_A
text1 1 0 1 1
text2 1 0 1 1
text3 1 1 0 1
然后我可以运行像cor 这样的命令来获取相关性,但是,我想要频率而不是相关性。
注意这不同于关于共现的问题,其中变量名本身(此处的位置)被忽略,例如“How to use R to create a word co-occurrence matrix”
【问题讨论】:
-
我不明白您如何获得预期的输出?什么是
1A、3A? -
@RonakShah 第一个是位置(数字),第二个是字母,不过我愿意接受有关如何表示这一点的建议!
-
字符串可以有多长?
-
@dvd280 它们现在是 53 个字符(大小相同)
-
@RonakShah 用您的其他答案解决了这个问题!
标签: r dataframe matrix text combinations