【发布时间】:2019-05-02 10:06:36
【问题描述】:
我有两个数据框。
数据
Name Type Code
gabapentine Pharmaceutical 60142-96-3
Glyphosate Pesticide 1071-83-6
Guanylurea Pharmaceutical 141-83-3
hydrochlorthiazide Pharmaceutical 58-93-5
价值观
Name Value Code
gabapentine 0,2 60142-96-3
Glyphosate 1,8 1071-83-6
Urea 1,2 141-83-3
hydrochlorthiazide 0,5 58-93-5
我想通过匹配列 Name 和 Code 将列 type 从 Data 添加到 Values。
我知道如何只匹配一列,如下所示:
Values$type = Data$type[match(Values$Name, Data$Name)]
但现在我还想考虑Code,因为有些名字不匹配。
有没有办法在一行中做到这一点,比如
Values$type = Data$type[match((Values$Name, Data$Name) | (Values$Code, Data$Code))]
这对我不起作用,所以我想知道正确的方法。
我尝试像其他问题一样使用合并
merge(Values, Data,all.x = TRUE)
但是在来自数据帧Data 的Guanylurea 中,当它应该与来自数据帧Values 的Urea 匹配时,我会得到类型NA。该行的结果将是Type 等于Pharmaceutical,但Names 不完全匹配。那么如何将部分匹配添加到函数match 或merge 中?或者这两个有替代品吗?
【问题讨论】:
-
merge(Values, Data,all.x = TRUE) -
我试过了,但在 Guanyurea 中,我得到的是 NA 类型而不是 Pharmaceutical,可能是因为名称不完全匹配。