如果值在B列中至少出现一次,请在A列中填写给定值的每个样本

时间:2017-05-05 12:51:13

标签: r

我正在尝试创建一个具有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来执行这样的操作,并且非常欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

以下是使用week并使用any

进行分组的基本R方法
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