R语言两数据框执行left_join无报错但cov表字段全为空问题排查
问题原因
- 第一,你对
left_join的by参数用法理解错误:by参数仅用于指定左右两个表的连接列名对应关系,你写的toupper('LBORRESU')只会把字符串"LBORRESU"转为全大写的列名,不会对cov表中LBORRESU列的内容做大小写转换,实际生效的连接规则完全没有做内容格式统一。 - 第二,连接键的内容大小写不匹配:
df的LBTEST列内容为全大写的"ALANINE AMINOTRANSFERASE",cov的LBTEST列内容为大小写混合的"Alanine Aminotransferase",内容不一致无法匹配- 虽然
df的lbstresu和cov的LBORRESU都有"U/L"取值,但未统一格式的情况下也存在大小写不一致匹配失败的风险。
解决方案
先统一两个表连接键的内容格式,再执行左连接,示例代码如下:
library(dplyr) # 预处理cov表的连接列,统一转为全大写 cov_processed <- cov %>% mutate( LBTEST = toupper(LBTEST), LBORRESU = toupper(LBORRESU) ) # 执行左连接 test <- left_join(df, cov_processed, by = c('LBCAT' = 'LBCAT', 'LBTEST' = 'LBTEST', 'lbstresu' = 'LBORRESU'))
处理后cov表的字段可以正常匹配到df中,不会再出现全空的情况。
内容的提问来源于stack exchange,提问作者Stataq
相关产品推荐
相关产品推荐

