Уникальные разные строки в группе - PullRequest
0 голосов
/ 10 июня 2018

У меня есть фрейм данных, похожий на этот

    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

В моем исходном фрейме данных каждый столбец представляет человека.Поэтому я должен сопоставить один единственный x для одного y, что дает мне что-то вроде

    x y
    A 1
    B 2
    C 3

Другими словами, мне нужно, чтобы y сгруппировался по x, но y не должен повторяться вдоль кадра данных.

Есть идеи, чтобы помочь?

Я действительно искал его в stackoverflow, но не смог найти ничего, что могло бы мне помочь.Спасибо !!

1 Ответ

0 голосов
/ 10 июня 2018

Решение, использующее 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.

...