新手R问题:
假设我有一个包含 3 列的数据框:id、日期和值。
对于每个 ID,如果它们具有不同的值,但仅当日期不同时,如何捕获。
例如(如下),id 1 在这里将是未命中(不同的值但相同的日期),但 id 2 将是命中(不同日期的不同值)。由于值没有不同,因此 ID 3 可能会丢失。
id date value
1 1/1/2000 A
1 1/1/2000 B
2 1/1/2000 A
2 1/1/1999 B
3 1/1/2000 A
3 1/1/1999 A
最佳答案
按“id”分组后,检查“日期”以及“值”列中是否有多个唯一的“日期”,并将其传递到过滤器
library(dplyr)
df1 %>%
group_by(id) %>%
filter(n_distinct(date) > 1, n_distinct(value) > 1)
-输出
# A tibble: 2 x 3
# Groups: id [1]
# id date value
# <int> <chr> <chr>
#1 2 1/1/2000 A
#2 2 1/1/1999 B
或者使用anyDuplicated
df1 %>%
group_by(id) %>%
filter(!anyDuplicated(date), !anyDuplicated(value))
# A tibble: 2 x 3
# Groups: id [1]
# id date value
# <int> <chr> <chr>
#1 2 1/1/2000 A
#2 2 1/1/1999 B
数据
df1 <- structure(list(id = c(1L, 1L, 2L, 2L, 3L, 3L), date = c("1/1/2000",
"1/1/2000", "1/1/2000", "1/1/1999", "1/1/2000", "1/1/1999"),
value = c("A", "B", "A", "B", "A", "A")),
class = "data.frame", row.names = c(NA,
-6L))
关于R:如何根据其他多个列查找一列中的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65012780/