R:如何根据其他多个列查找一列中的不同值

标签 r

新手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/

相关文章:

r - 从ESRI v10地理数据库获取R中的数据

r - 添加自定义函数以在 dplyr 中进行汇总

r - 有没有办法连接基于数字向量的向量字符串?

r - 与 lmerTest 一起使用时,anova() 不显示 p 值

regex - 使用正则表达式拆分列中的值

xml - R-XML 将节点拉入矩阵/DF 中以解决缺失节点的问题

r - 使用循环和命名约定在数据框中创建新的命名变量

arrays - R填充多维数组

r - 从 Shiny 保存 ggplot 会给出空白 png 文件

r - 在 R 中查找长度大于 1 的向量元素