【发布时间】:2020-06-23 15:28:19
【问题描述】:
假设我们有一个如下的df:
A B C D E
1 1 0 0 1
0 0 1 0 0
0 0 0 0 1
1 1 1 1 0
0 1 1 0 1
1 0 1 0 0
所以我想创建另一个变量F,它表示,如果 A:D 的总和大于 1,则 F 为 1,A:D 为 0。
此外,如果E == 1,则F = 0。
所以这是我写的,但它不起作用......
#Counter
df<- df %>%
mutate(case_count = A+B+C+D)
df$F <- ifelse(df$E == 1, 0,
ifelse(df$case_count > 1,
df$A == 0 &
df$B == 0 &
df$C == 0 &
df$D == 0 &
df$F == 1, 0))
那么这里的正确结果应该是
A B C D E case_count F
1 1 0 0 1 2 0
0 0 1 0 0 1 0
0 0 0 0 1 0 0
0 0 0 0 0 4 1
0 1 1 0 1 2 0
0 0 0 0 0 2 1
【问题讨论】:
-
这里的解释和输出有逻辑问题。让我们占据第一行。
case_count > 1和E = 1。为什么是F = 0? -
@csgroen apoligies,它是 e = 1,f =0。
标签: r if-statement dplyr across