首页 > 解决方案 > R根据单元格是否为空将多列合并为一列

问题描述

我做了四个条件的实验,我想把四列合并为一个;取决于列中的单元格是否为空。例如,df 看起来像这样:

df <- data.frame(
  ResponseID = c (1:6),
  ZER_Condition = c ("Low","Med","","","",""),
  LOW_Condition = c ("","","High","Low","",""),
  MED_Condition = c ("","","","","High",""),
  HIG_Condition = c ("","","","","","Low")
)

我想合并列,以便获得以下列:

Merged_Condition = c ("Low","Med","High","Low","High","Low")

我尝试了以下功能,但它不起作用:

df %>% mutate (Merged_Condition = coalesce(ZER_Condition,LOW_Condition,MED_Condition,HIG_Condition)) %>%
  select(ResponseID, Merged_Condition)

标签: rmerge

解决方案


尝试用 NA 替换列中的“”,您的代码应该可以工作。

df <- data.frame(
  ResponseID = c (1:6),
  ZER_Condition = c ("Low","Med",NA,NA,NA,NA),
  LOW_Condition = c (NA,NA,"High","Low",NA,NA),
  MED_Condition = c (NA,NA,NA,NA,"High",NA),
  HIG_Condition = c (NA,NA,NA,NA,NA,"Low")
)

df %>% mutate (Merged_Condition = coalesce(ZER_Condition,LOW_Condition,MED_Condition,HIG_Condition)) %>%
  select(ResponseID, Merged_Condition)

推荐阅读