如何对包含链接到R中另一个Dataframe中的值的元素的Dataframe行执行操作?

时间:2016-06-05 15:58:02

标签: r dataframe

我有两个数据框,每个数据框都有一个包含多个单词的列。但是这两列的顺序和大小是不同的。 第一个数据库更大,看起来像这样:

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

...

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是merge

merge(df, myTable, by="words", all.x=T)

第二种可能不太实用的方法是将matchcbind一起使用:

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")