dplyr :: distinct-仅保留选定的列,而不是全部

时间:2018-12-19 12:21:05

标签: r dplyr

应用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创建

但是还有更简洁的方法吗?乐于指出另一个功能。

如果这是骗子,请为我感到羞耻。

1 个答案:

答案 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