gpt4 book ai didi

r 编程 : align two sequences of words

转载 作者:行者123 更新时间:2023-12-02 01:08:56 25 4
gpt4 key购买 nike

我想对齐两个大部分在一列上相交的数据集——但每个数据集都缺少一些行。例如:

df1 <- data.frame(word = c("my", "dog", "ran", "with", "your", "dog"),
freq = c(5, 2, 2, 6, 5, 10))
df2 <- data.frame(word = c("my", "brown", "dog", "ran", "your", "dog"),
pos = c("a", "b", "c", "d", "a", "e"))

我想要的输出是在缺少项目的地方插入空白。因此,在输出中,df1 的新形式将具有 NA,其中 df1 缺少 df2 中的单词匹配,而 df2 的新形式将具有 NA,其中 df2 缺少 df1 中的单词实例。

在我的示例中,顺序很重要,元素确实会重复。 (所以这不是一般的“合并”情况。)我怀疑 DTW 可以解决这个问题,但我不确定。出于目前的目的,规定只有完全匹配才匹配是公平的。

对于上述情况,所需的输出将是包含这些列的数据框:

$word1 my NA dog ran with your dog
$freq 5 NA 2 2 6 5 2
$word2 my brown dog ran NA your dog
$pos a b c d NA a c

因此,每个原始数据帧中的顺序保持不变;什么都没有被删除;单词标记仍然是标记(它是一个语料库,而不是字典);真正发生的只是在数据丢失的地方插入了空格 (NA)。

最佳答案

df1$count = ave(seq_along(df1$word), df1$word, FUN = seq_along)
df2$count = ave(seq_along(df2$word), df2$word, FUN = seq_along)
df1$merge = paste(df1$count, df1$word)
df2$merge = paste(df2$count, df2$word)
output = merge(x = df1, y = df2, by = "merge", all.x = TRUE, all.y = TRUE)
output[c(2, 3, 5, 6)]
# word.x freq word.y pos
#1 <NA> NA brown b
#2 dog 2 dog c
#3 my 5 my a
#4 ran 2 ran d
#5 with 6 <NA> <NA>
#6 your 5 your a
#7 dog 2 dog c

关于r 编程 : align two sequences of words,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com