【发布时间】:2020-09-17 15:19:41
【问题描述】:
我有一个如下所示的数据框:
a b c d
10 yes yes yes yes
11 yes yes yes yes
12 yes yes yes yes
13 yes yes yes yes
14 no <NA> no no
15 no <NA> no no
16 no <NA> no no
17 no <NA> no no
18 no <NA> no no
19 no <NA> no no
20 no <NA> no no
我有一个 if else 语句,它根据对所有先前列的答案是“是”还是“否”来创建一个值为 1,0 的新列。但是,我的代码不考虑 NA。 这是我使用的代码:
y <- x %>%
mutate(
health_ever = ifelse(
e == 'yes ' |
b == 'yes' |
c == 'yes' |
d == 'yes',
1,
0
)
)
这里是重现它的代码:
x<-structure(
list(
a = structure(
c(6L, 6L, 6L, 6L, 7L, 7L,
7L, 7L, 7L, 7L, 7L),
.Label = c(
"missing",
"inapplicable",
"proxy respondent ",
"refusal",
"don't know",
"yes ",
"no "
),
class = "factor"
),
b = structure(
c(6L, 6L, 6L, 6L, NA, NA, NA, NA, NA,
NA, NA),
.Label = c(
"missing",
"inapplicable",
"proxy",
"refusal",
"don't know",
"yes",
"no"
),
class = "factor"
),
c = structure(
c(6L,
6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L),
.Label = c(
"missing",
"inapplicable",
"proxy",
"refusal",
"don't know",
"yes",
"no"
),
class = "factor"
),
d = structure(
c(6L, 6L,
6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L),
.Label = c(
"missing",
"inapplicable",
"proxy",
"refusal",
"don't know",
"yes",
"no"
),
class = "factor"
)
),
row.names = 10:20,
class = "data.frame"
)
如何更改我的代码以忽略任何 NA,以便根据其他列仍然给出 1,0。这是我想要的输出:
a b c d e
1 yes yes yes yes 1
2 yes yes yes yes 1
3 yes yes yes yes 1
4 yes yes yes yes 1
5 no <NA> no no 0
6 no <NA> no no 0
7 no <NA> no no 0
8 no <NA> no no 0
【问题讨论】:
标签: r if-statement dplyr