【发布时间】:2017-03-20 13:14:59
【问题描述】:
我有两列包含因子,我想合并。由于我有很多观察,我想知道是否有 dplyr 或 tidyr 的快速选项。
Col1 Col2
A NA
B NA
NA C
A A
NA B
A NA
B B
我知道这应该不难,但我显然在这里遗漏了一些东西。我尝试了几个选项,但由于我想保留这些因素,我知道的所有选项都不起作用。
请注意,当两列都有结果时,它们将始终相同。但这是我拥有的数据特征的一部分。 我希望有这样的东西:
Col1 Col2 Col3
A NA A
B NA B
NA C C
A A A
NA B B
A NA A
B B B
【问题讨论】:
-
如果没有一列是 NA 怎么办?
-
如果它们不是 NA,它们将完全相同。但我会在这个问题上进行编辑。
-
我认为 dplyr 或 tidyr 不适合这样的任务。我会选择好的 ol' base R
df[cbind(1:nrow(df), max.col(!is.na(df)))] -
或使用
ifelse:df$c <- ifelse(is.na(df$col1), as.character(df$col2), as.character(df$col1))。如有必要,您可以将其包装在factor中。 -
@FilipeTeixeira 如果您想将它们保留为
factors,只需将其包装为factor,如lmo 所述。所以大卫的回答试试,factor(df[cbind(1:nrow(df), max.col(!is.na(df)))]).