匹配和提取具有两个数据帧的元素

时间:2014-08-15 14:04:36

标签: r dataframe match

我有一个数据框,我执行了聚类,并将结果放在一列中,如:

> head(kdata) ID cluster code longt latit 1 410001 2 1003035 -87.7316 41.73827 2 410002 3 1001655 -87.6274 41.80555 3 410007 3 1002658 -87.6321 41.68163 4 410030 3 1001218 -87.7181 41.89198 5 410033 3 1002393 -87.9277 43.02118 6 410037 3 1001039 -87.9560 43.12313

我有另一个看起来像这样的数据框:

> head(gdata) code Month Year MonthKpi.3.1 MonthKpi.4 MonthKpi.7 MonthKpi.8 MonthKpi.9 7959973 1001218 1 2010 -4721.50943 -0.743661905 0.06113550 0.15366151 0.2892823 5256388 1001039 1 2010 -1180.66667 -0.081875509 0.06277033 0.09753102 0.3749104 19304425 1001978 1 2010 -67.46296 -0.006731238 0.01908687 0.06382502 0.6990651 592175 1000107 1 2010 458.61538 0.019967915 0.11607883 0.13124782 0.3024831 32464177 1002863 1 2010 -4037.80000 -0.492330578 0.02269961 0.10713102 0.3161038 18160046 1001900 1 2010 -3232.09091 -0.499757020 0.07833606 0.11517690 0.3062926

数据框“gdata”包含相同代码(如kdata中),但重复多次(有些重复36次,有些重复35次等)。我想要做的是在gdata中创建一个新列,其中包含从kdata中提取的相应集群。请注意,gdata和kdata的大小并不相同,正如我已经提到的,gdata中的代码都在kdata中找到,但是它们会重复多次以使gdata的大小远大于KDATA。

所以期望的结果是:

> head(gdata)

      `code   Month Year MonthKpi.3.1   MonthKpi.4 MonthKpi.7 MonthKpi.8 MonthKpi.9 cluster`

7959973 1001218 1 2010 -4721.50943 -0.743661905 0.06113550 0.15366151 0.2892823 2 5256388 1001039 1 2010 -1180.66667 -0.081875509 0.06277033 0.09753102 0.3749104 3 19304425 1001978 1 2010 -67.46296 -0.006731238 0.01908687 0.06382502 0.6990651 2 592175 1000107 1 2010 458.61538 0.019967915 0.11607883 0.13124782 0.3024831 1 32464177 1002863 1 2010 -4037.80000 -0.492330578 0.02269961 0.10713102 0.3161038 1 18160046 1001900 1 2010 -3232.09091 -0.499757020 0.07833606 0.11517690 0.3062926 1

让我补充一个事实,即在添加“cluster”列之后我想在 gdata 中保留我的观察序列(即我不希望有类似的代码彼此相邻。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用merge

功能
merge(gdata, kdata[c("cluster", "code")], by = "code", sort = FALSE)

结果:

     code Month Year MonthKpi.3.1  MonthKpi.4 MonthKpi.7 MonthKpi.8
1 1001218     1 2010    -4721.509 -0.74366190 0.06113550 0.15366151
2 1001039     1 2010    -1180.667 -0.08187551 0.06277033 0.09753102
  MonthKpi.9 cluster
1  0.2892823       3
2  0.3749104       3

请注意。在您的示例中,并非kdata中存在gdata的所有代码。使用实际数据,结果数据框将与gdata具有相同的行数。