【发布时间】:2017-04-28 11:09:14
【问题描述】:
我有一个包含几千个缺失值的非常大的数据集,如下所示:
df1:
doi journal year
1 10.1037/0002-9432.76.1.13 <NA> NA
2 10.1037/0002-9432.76.1.13 <NA> NA
3 10.1037/0002-9432.76.1.13 <NA> NA
4 10.1037/0003-066X.60.8.750 <NA> NA
5 10.1037/0003-066X.60.8.750 <NA> NA
6 10.1037/0003-066X.60.8.750 <NA> NA
我有另一个数据框,其中包含所有缺失的期刊名称和年份:
df2:
doi year journal
17 10.1037/0002-9432.76.1.13 2006 American Journal of Orthopsychiatry
18 10.1037/0002-9432.76.1.13 2006 American Journal of Orthopsychiatry
19 10.1037/0002-9432.76.1.13 2006 American Journal of Orthopsychiatry
31 10.1037/0003-066x.60.8.750 2005 American Psychologist
32 10.1037/0003-066x.60.8.750 2005 American Psychologist
33 10.1037/0003-066x.60.8.750 2005 American Psychologist
然而,当我尝试通过它们的 doi 值匹配两者时
df1$year[is.na(df1$year)] <- df2$year[match(df1$doi[is.na(df1$year)], df2$doi)]
df1$journal[is.na(df1$journal)] <- df2$journal[match(df1$doi[is.na(df1$journal)], df2$doi)]
这仅适用于某些人:
Result:
doi journal year
1 10.1037/0002-9432.76.1.13 American Journal of Orthopsychiatry 2006
2 10.1037/0002-9432.76.1.13 American Journal of Orthopsychiatry 2006
3 10.1037/0002-9432.76.1.13 American Journal of Orthopsychiatry 2006
4 10.1037/0003-066X.60.8.750 <NA> NA
5 10.1037/0003-066X.60.8.750 <NA> NA
6 10.1037/0003-066X.60.8.750 <NA> NA
我尝试了不同的方法来匹配数据帧(如this 或this),以及在加载数据帧时修剪空白,但没有成功。 “doi”和“journal”是字符向量,“year”是一个整数。如果有人有一些见解,非常感谢。
【问题讨论】:
-
R 区分大小写,因此您的问题在于 doi 在值中显示的方式产生 NA,您在一个 df 中的 doi 中有大写 X,但在另一个中没有
-
引用@Sarina 的评论:使用
tolower像这样match(df1$doi[is.na(df1$year)], tolower(df2$doi))可以解决问题。 -
你可能还需要
trimws
标签: r