【发布时间】:2018-10-17 09:39:20
【问题描述】:
我有一个df等数据框,想创建列生成df2。
df <- data.frame(bind_cols(x = c('N', 'Y', 'N', 'Y', 'N'),
y = c(NA, 'N', 'Y', 'Y', 'N')))
df2 <- data.frame(bind_cols(x = c('N', 'Y', 'N', 'Y', 'N'),
y = c(NA, 'N', 'Y', 'Y', 'N'),
any = c('N', 'Y', 'Y', 'Y', 'N'),
both = c('N', 'N', 'N', 'Y', 'N')))
如果 x 和 y 中的一个或另一个或两者都 == 'Y',则新列 'any' 应该 = 'Y'。如果 x 和 y == 'Y',则两者都应该 ='Y'。 我还没有弄清楚如何处理第一行中的 NA 以使 any = 'Y'。我目前的策略如下,但在第 1 行“任何”列中给出了 NA,我想在其中 =“Y”。即使有 NA 值,如何更改代码以给出 Y 的结果?
df2 <- df %>%
mutate(any = case_when(x =='Y'|y=='Y' ~'Y',
x != 'Y' & y != 'Y' ~ 'N'),
both = ifelse(x=='Y'& y=='Y', 'Y', 'N'))
【问题讨论】:
标签: r dataframe dplyr conditional