每组唯一不同的行

时间:2018-06-10 00:17:46

标签: r group-by unique

我有一个看起来像这样的数据框

    DF <- data.frame(x=rep(c("A", "B", "C"), times=1, each=3),
            y=c(1,2,3))

给了我

       x y
     1 A 1
     2 A 2
     3 A 3
     4 B 1
     5 B 2
     6 B 3
     7 C 1
     8 C 2
     9 C 3

在我的原始数据框中,每列代表一个人。所以我必须匹配单个y的单个y,给我一些像

    x y
    A 1
    B 2
    C 3

换句话说,我需要按x分组,但y不能沿数据帧重复。

有什么想法可以提供帮助吗?

我真的在stackoverflow上寻找它,但找不到任何可以帮助我的东西。谢谢!!

1 个答案:

答案 0 :(得分:2)

使用dplyr的解决方案,假设所有组的行数与组号相同。

library(dplyr)

DF2 <- DF %>%
  mutate(Group_ID = group_indices(., x)) %>%
  group_by(x) %>%
  summarise(y = y[first(Group_ID)]) %>%
  ungroup()
DF2
# # A tibble: 3 x 2
#   x         y
#   <fct> <dbl>
# 1 A         1
# 2 B         2
# 3 C         3

或者我们可以使用以下内容:

DF2 <- DF %>% filter(as.numeric(x) == y)
DF2
#   x y
# 1 A 1
# 2 B 2
# 3 C 3

这是有效的,因为列x是因素。当我们将其转换为数字时,我们可以直接使用y中的值进行过滤。