我的数据如下所示:
1 0 12341 0 12351 0 54342 1 312122 1 32122 0 12113 0 22123 0 22123 1 1212
我想使用R来生成一个新列,如果第二列中属于同一组的三个值中至少有一个为1,则新列的值为1。因此,我的新列将如下所示:
1 0 1234 01 0 1235 0 1 0 5434 02 1 31212 12 1 3212 12 0 1211 13 0 2212 13 0 2212 13 1 1212 1
由于每三行属于同一组,我无法弄清楚如何实现这一点。谁能帮帮我吗?
回答:
你可以使用dplyr
和group_by
对第一列(在我这里是V1)进行分组,然后使用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