应用dplyr::distinct
,为了仅保留选定的列而不是所有列(.keep_all = TRUE
),我目前正在使用select
选择事后操作:
library(dplyr)
foo_df <- data.frame(id1=c(1,1,3),id2=c(1,1,4), val1 = letters[1:3], val2 = letters[3:5])
foo_df %>% distinct(id1,id2,.keep_all = TRUE) %>% select(id1,id2, val1)
# I want to keep "val1" and the identifiers for unique combinations
#> id1 id2 val1
#> 1 1 1 a
#> 2 3 4 c
#> packageVersion('dplyr')
#> [1] ‘0.7.7’
由reprex package(v0.2.1)于2018-12-19创建
但是还有更简洁的方法吗?乐于指出另一个功能。
如果这是骗子,请为我感到羞耻。
答案 0 :(得分:1)
也许data.table语法更符合您的喜好。比dplyr更简洁。
library(data.table)
DT <- data.table(foo_df)
# ?data.table::unique
unique(DT[, .(id1, id2, val1)], by = c("id1", "id2"))
id1 id2 val1
1: 1 1 a
2: 3 4 c