我的数据如下:
1 0 1234
1 0 1235
1 0 5434
2 1 31212
2 1 3212
2 0 1211
3 0 2212
3 0 2212
3 1 1212
我想使用R完成的操作是生成一个新列,如果第二列中三个值(都属于一起)中的至少一个具有1,则该列的值为1。因此,我的新列将是像:
1 0 1234 0
1 0 1235 0
1 0 5434 0
2 1 31212 1
2 1 3212 1
2 0 1211 1
3 0 2212 1
3 0 2212 1
3 1 1212 1
由于每三行都属于同一行,因此我无法弄清楚如何完成此操作。有人可以帮我吗?
最佳答案
您可以在第一列(在我的情况下为V1)中使用dplyr
和group_by
,然后使用any
检查是否有任何值等于1。
library(dplyr)
df %>%
group_by(V1) %>%
mutate(new = ifelse(any(V2) == 1, 1, 0))
#Source: local data frame [9 x 4]
#Groups: V1 [3]
# V1 V2 V3 new
# <int> <int> <int> <dbl>
#1 1 0 1234 0
#2 1 0 1235 0
#3 1 0 5434 0
#4 2 1 31212 1
#5 2 1 3212 1
#6 2 0 1211 1
#7 3 0 2212 1
#8 3 0 2212 1
#9 3 1 1212 1