R语言merge合并数据框新增列全为NA问题及解决
数据框合并后df2数据全为NA?问题出在字段大小写不匹配
你用merge(df1, df2, by="scientific_name", all=T)合并后df2数据全变NA,核心原因是两个数据框的scientific_name字段大小写不匹配:df1里的学名全是小写,df2里的学名首字母大写,而R的merge函数是严格区分字符串大小写的,所以没有找到任何匹配项,最终df2的列只能填充NA。
解决步骤:
- 先统一两个字段的大小写,比如全部转成小写:
# 统一为小写 df1$scientific_name <- tolower(df1$scientific_name) df2$scientific_name <- tolower(df2$scientific_name)
或者全部转成大写:
# 统一为大写 df1$scientific_name <- toupper(df1$scientific_name) df2$scientific_name <- toupper(df2$scientific_name)
- 再执行合并操作:
combined <- merge(df1, df2, by="scientific_name", all=TRUE)
这样处理后,两个数据框会基于统一大小写后的学名正确合并:如果有匹配的学名,对应行的字段会关联;如果没有交集,两边的所有行都会保留,各自缺失的字段用NA填充,但df2的原始数据不会再全部变成NA。
内容的提问来源于stack exchange,提问作者Hartje
相关产品推荐
相关产品推荐

