如果该组在“读取”列中具有相同的值,我想从数据框中删除该组。
我想按ID对数据帧进行分组,然后检查列读取中的每个值对于一个组是否相同。如果该组的所有值都相同,那么我要删除该组的所有行。
下面是一个包含三列的数据框。
library(dplyr)
df <- tibble(
Date = c('2019/1/1', '2019/1/2', '2019/2/2', '2019/2/5', '2019/2/7'),
ID = c('a', 'a', 'b', 'b', 'b'),
Reading = c(1, 1, 2, 1, 1)
)
df$Date = as.Date(dfa$Date)
> df
# A tibble: 5 x 3
Date ID Reading
<date> <chr> <dbl>
1 2019-01-01 a 1
2 2019-01-02 a 1
3 2019-02-02 b 2
4 2019-02-05 b 1
5 2019-02-07 b 1
我考虑过使用distinct来减少数据帧。
df %>% group_by(ID) %>%
distinct(Reading, .keep_all = TRUE) %>%
filter(n()>1) %>%
ungroup
# A tibble: 2 x 3
Date ID Reading
<date> <chr> <dbl>
1 2019-02-02 b 2
2 2019-02-05 b 1
但是,这也删除了列ID中b组的唯一值。
我想要的输出是
# A tibble: 3 x 3
Date ID Reading
<date> <chr> <dbl>
1 2019-02-02 b 2
2 2019-02-05 b 1
3 2019-02-07 b 1
答案 0 :(得分:2)
我们按“ ID”和filter
进行分组,其中“读数”具有多个unique
元素(n_distinct
)
library(dplyr)
df %>%
group_by( ID) %>%
filter(n_distinct(Reading) > 1)