我有两个数据框,每个数据框都有一个包含多个单词的列。但是这两列的顺序和大小是不同的。 第一个数据库更大,看起来像这样:
words response time.response
WORD1 s 434
WORD2 s 567
WORD3 l 765
WORD2 s 235
WORD4 l 854
WORD3 l 521
...
你可以看到一些单词出现几次 第二个数据帧较小,如下所示:
words Assoc. Dist
WORD1 4 1
WORD2 7 0
WORD3 6 1
WORD4 2 1
...
如何将第二个数据框的值与第一个数据框的值相关联,并知道它们是相同的?
我期待这样的事情:
words response time.response Assoc Dist
WORD1 s 434 4 1
WORD2 s 567 7 0
WORD3 l 765 6 1
WORD2 s 235 7 0
WORD4 l 854 2 1
WORD3 l 521 6 1
...
答案 0 :(得分:1)
最简单的方法可能是merge
:
merge(df, myTable, by="words", all.x=T)
第二种可能不太实用的方法是将match
与cbind
一起使用:
cbind(df, myTable[match(df$words, myTable$words), -1])
此方法的工作方式类似于查找表:match
函数在主数据集中查找单词匹配的相应行。我们使用这些行索引重新组织较短的data.frame,在必要时重复行并删除"单词"列" -1。"最后,我们使用cbind
将较短数据集的匹配行组合到较大的数据集上。
数据强>
df <- read.table(header=T, text="words response time.response
WORD1 s 434
WORD2 s 567
WORD3 l 765
WORD2 s 235
WORD4 l 854
WORD3 l 521")
myTable <- read.table(header=T, text="words Assoc. Dist
WORD1 4 1
WORD2 7 0
WORD3 6 1
WORD4 2 1")