R语言数据过滤需求:存在至少3个连续type=Yes时仅保留首个Yes行
R数据过滤处理需求与示例
需求说明
当数据中某id分组下存在至少3个连续的type=Yes值时,需过滤掉这组连续值中的n-1行(仅保留该组连续Yes的首个行)。例如id=2存在3个连续Yes,因此该id仅保留第一个Yes行,后续的Yes行均被过滤。
给定数据集(R代码)
df <- data.frame( id = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7), type = c("No", "Yes", "Yes", "DK", "Yes", "No", "Yes", "Yes", "Yes", "DK", "No", "No", "Yes", "Yes", "DK", "No", "Yes", "Yes", "No", NA, "No", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "Yes", "Yes" ), cumlsum_Yes = c(0, 1, 2, 0, 1, 0, 1, 2, 3, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 1, 2, 3, 4) )
原数据展示
id type cumlsum_Yes 1 1 No 0 2 1 Yes 1 3 1 Yes 2 4 1 DK 0 5 1 Yes 1 6 2 No 0 7 2 Yes 1 8 2 Yes 2 9 2 Yes 3 10 2 DK 0 11 3 No 0 12 3 No 0 13 3 Yes 1 14 3 Yes 2 15 3 DK 0 16 4 No 0 17 4 Yes 1 18 4 Yes 2 19 5 No 0 20 5 <NA> 0 21 6 No 0 22 6 Yes 1 23 6 Yes 2 24 6 Yes 3 25 7 No 0 26 7 Yes 1 27 7 Yes 2 28 7 Yes 3 29 7 Yes 4
预期处理结果
id type cumlsum_Yes 1 1 No 0 2 1 Yes 1 3 1 Yes 2 4 1 DK 0 5 1 Yes 1 6 2 No 0 7 2 Yes 1 8 3 No 0 9 3 No 0 10 3 Yes 1 11 3 Yes 2 12 3 DK 0 13 4 No 0 14 4 Yes 1 15 4 Yes 2 16 5 No 0 17 5 <NA> 0 18 6 No 0 19 6 Yes 1 20 7 No 0 21 7 Yes 1
内容的提问来源于stack exchange,提问作者Henock
相关产品推荐
相关产品推荐

