我正在尝试创建一个具有TRUE / FALSE值的新列(C)。
A列有许多可能的值,每个列的B值都显示为TRUE / FALSE值。
对于A列的每个值,如果B列中至少有一行为“TRUE”,我希望该值的所有列C都为TRUE。例如......
A B
1 TRUE
1 FALSE
1 FALSE
1 FALSE
2 TRUE
2 FALSE
2 FALSE
3 FALSE
3 FALSE
4 TRUE
4 FALSE
4 FALSE
我想要的回报如下:
A B C
1 TRUE TRUE
1 FALSE TRUE
1 FALSE TRUE
1 FALSE TRUE
2 TRUE TRUE
2 FALSE TRUE
2 FALSE TRUE
3 FALSE FALSE
3 FALSE FALSE
4 TRUE TRUE
4 FALSE TRUE
4 FALSE TRUE
问题在于,虽然我可以输入ifelse语句来手动为A列中的每个值定义TRUE / FALSE,但我在A列中有100个不同的值。
因此,如上所述:如果A列中每个值至少有一行为TRUE,则该值的所有行都需要在C列中定义为TRUE。
我不知道如何让R来执行这样的操作,并且非常欢迎任何建议。
答案 0 :(得分:2)
以下是使用week
并使用any
ave
如果向量中的任何值为TRUE,则 df$c <- ave(df$B, df$A, FUN=any)
df
A B c
1 1 TRUE TRUE
2 1 FALSE TRUE
3 1 FALSE TRUE
4 1 FALSE TRUE
5 2 TRUE TRUE
6 2 FALSE TRUE
7 2 FALSE TRUE
8 3 FALSE FALSE
9 3 FALSE FALSE
10 4 TRUE TRUE
11 4 FALSE TRUE
12 4 FALSE TRUE
返回TRUE。这是由any
组进行的。
数据强>
ave