R中的merge()未返回所需的结果

时间:2016-05-01 07:23:46

标签: r dataframe merge

我有要被合并的名为exp和cat的数据帧。 以下是数据框:

> exp
   keyword keyword2
1      SLD      SLD
2  TRUNION   GANTRY
3     PCON      LVA
4      SLD      SLD
5   GANTRY     GCON

> cat
            keyword category
1                PA      11-113
2                IQ      151-16
3              GCON      25-11
4              PCON      29-11
5               HVA      12-41
6               LVA      22-31
7              HCON      21-40
8                LR      2-50
9                TP      12-16
10              CID      25-66
11               HD        31
12              LLD      35-10
13              SLD      37-12
14              RTT      3-26
15          TRUNION      31-35
16           GANTRY      13-15

但是在合并这两个数据帧时,我只得到了NA。 请让我知道我哪里出错了。

这是函数及其输出:

>merge(exp,cat, by='keyword',all.x = TRUE)

   keyword keyword2 Category
1     PCON      LVA     <NA>
2      SLD      SLD     <NA>
3      SLD      SLD     <NA>
4  TRUNION   GANTRY     <NA>
5   GANTRY     GCON     <NA>

2 个答案:

答案 0 :(得分:0)

我无法重现您的错误。以下代码适用于我:

exp <- data.frame(keyword=c("SLD", "TRUNION", "PCON", "SLD", "GANTRY"), keyword2=c("SLD", "GANTRY", "LVA", "SLD", "GCON"))

cat <- data.frame(keyword=c("PA", "IQ", "GCON", "PCON", "HVA", "LVA", "HCON", "LR", "TP", "CID", "HD", "LLD", "SLD", "RTT", "TRUNION", "GANTRY"), category=c("11-113", "151-16", "25-11", "29-11", "12-41", "22-31", "21-40", "2-50", "12-16", "25-66", "31", "35-10", "37-12", "3-26", "31-35", "13-15"))

merge(exp, cat, all.x=TRUE, by="keyword")
  keyword keyword2 category
1  GANTRY     GCON    13-15
2    PCON      LVA    29-11
3     SLD      SLD    37-12
4     SLD      SLD    37-12
5 TRUNION   GANTRY    31-35

如果您使用dput()提供实际的expcat,这将有所帮助。然后我们更有可能弄清楚正在发生什么。我注意到Category在你合并的df中是大写的,但在cat中没有,所以我怀疑你已经完成了另一个步骤(可能是无意中),你没有共享。

答案 1 :(得分:0)

如果您的exp数据集为小写,则转换为上限并合并,

exp <- as.data.frame(sapply(exp, toupper))
merge(exp,cat, by='keyword',all.x = TRUE)
#  keyword keyword2 category
#1  GANTRY     GCON    13-15
#2    PCON      LVA    29-11
#3     SLD      SLD    37-12
#4     SLD      SLD    37-12
#5 TRUNION   GANTRY    31-35