R语言有没有可以合并数据框列、去除NA值的命令?
R语言合并分散列提取非NA值解决方案
你需要的是将每行对应类型列的唯一非NA值合并为新列,最终得到三列规整数据,可通过以下两种方法实现:
方法1:tidyverse 简洁实现
依赖dplyr包的coalesce()函数,该函数会按顺序返回每行第一个非NA值,完美适配你的场景:
# 未安装包可先运行 install.packages("tidyverse") library(tidyverse) # 数据处理 final_df <- employ.data %>% mutate( salary = coalesce(a, b, c), entry_date = coalesce(d, e, f) ) %>% select(employee, salary, entry_date)
方法2:基础R实现(无需额外安装包)
通过apply逐行提取非NA值即可:
# 提取薪资列 salary <- apply(employ.data[, c("a","b","c")], 1, function(row) row[!is.na(row)]) # 提取日期列 entry_date <- as.Date(apply(employ.data[, c("d","e","f")], 1, function(row) row[!is.na(row)])) # 生成结果数据框 final_df <- data.frame(employee = employ.data$employee, salary = salary, entry_date = entry_date)
两种方案运行后输出的final_df和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Stacy
相关产品推荐
相关产品推荐

