我想合并两个数据框。因此,Type
中的列Data
出现在Values
中。
DATA
Name Type Code
gabapentine Pharmaceutical 60142-96-3
Glyphosate Pesticide 1071-83-6
Guanylurea Pharmaceutical 141-83-3
hydrochlorthiazide Pharmaceutical 58-93-5
EDTA Industrial C. NA
Values
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
EDTA 2,3 NA
我想要这个
Name Value Code Type
gabapentine 0,2 60142-96-3 Pharmaceutical
Glyphosate 1,8 1071-83-6 Pesticide
Guanylurea 1,2 141-83-3 Pharmaceutical
hydrochlorthiazide 0,5 58-93-5 Pharmaceutical
EDTA 2,3 NA Industrial C.
我用merge
尝试了this question的选项
但是我明白了
Name Value Code Type
gabapentine 0,2 60142-96-3 Pharmaceutical
Glyphosate 1,8 1071-83-6 Pesticide
Urea 1,2 141-83-3 NA
hydrochlorthiazide 0,5 58-93-5 Pharmaceutical
EDTA 2,3 NA Industrial C.
是否可以在合并函数中使用OR |
运算符?还是在匹配功能中?原因是我想匹配Names
,如果不匹配(例如鸟粪和尿素),请查看Codes
,最后添加Type
列。
可能是这样的
Values$type = Data$type[match((Values$Name, Data$Name) | (Values$Code, Data$Code))]
或类似的
merge(Data, Values, by=c("Name" | "Code")))
答案 0 :(得分:1)
使用dplyr,您可以尝试:
df <- full_join(DATA,Values,by=c("Name","Code"))
然后您删除值列,特别是value.y
答案 1 :(得分:0)
请考虑在rbind
后面加上merge
的{{1}}以删除重复项:
unique