根据R中跨列的条件提取重复行

i7uaboj4  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(118)

我在R中尝试基于条件保留行。我想基于相同的条件在大量列中保留数据行。所以在下面的示例中,我想保留重复行中的行,其中每列的hv值为'0'。
数据框如下:

ID  A B C
1  001 1 1 1
2  002 0 1 0
3  002 1 0 0
4  003 0 1 1
5  003 1 0 1
6  003 0 0 1

我想这样:

ID  A B C
1  001 1 1 1
2  002 0 0 0
3  003 0 0 1

任何帮助将不胜感激,谢谢!

ee7vknir

ee7vknir1#

请检查此代码

# A tibble: 6 × 4
     ID     A     B     C
  <dbl> <dbl> <dbl> <dbl>
1     1     1     1     1
2     2     0     1     0
3     2     1     0     0
4     3     0     1     1
5     3     1     0     1
6     3     0     0     1

编号

data2 <- data %>% group_by(ID) %>% 
mutate(across(c('A','B','C'), ~ ifelse(.x==0, 0, NA), .names = 'x{col}')) %>% 
fill(xA, xB, xC) %>% 
mutate(across(c('xA','xB','xC'), ~ ifelse(is.na(.x), 1, .x))) %>% 
ungroup() %>% group_by(ID) %>% slice_tail(n=1)

输出

# A tibble: 3 × 7
# Groups:   ID [3]
     ID     A     B     C    xA    xB    xC
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1     1     1     1     1     1     1     1
2     2     1     0     0     0     0     0
3     3     0     0     1     0     0     1

相关问题