R: извлечь строки, которые принадлежат к той же группе - PullRequest
2 голосов
/ 14 марта 2019

Я пытаюсь распечатать все строки, принадлежащие одной и той же группе, на консоли. Тем не менее, пропустите записи, которые принадлежат к уникальной группе.

  id1 id2 name dob sex group
1   1   2    0   1   0       1
2   1   3    0   0   1       2
3   1   4    1   1   1       2
4   2   3    0   0   0       3
5   2   4    0   1   0       4
6   3   4    0   0   1       4
4   2   3    0   0   0       4
5   2   4    0   1   0       5
6   3   4    0   0   1       6

Результат:

  id1 id2 name dob sex group
2   1   3    0   0   1       2
3   1   4    1   1   1       2

  id1 id2 name dob sex group
5   2   4    0   1   0       4
6   3   4    0   0   1       4
4   2   3    0   0   0       4

Нижеследующее прекрасно работает, чтобы получить неуникальные, но мне нужен цикл for для печати на экране.

library(dplyr)
dfC %>% 
  group_by(group) %>% 
  filter(n()>1) 

1 Ответ

1 голос
/ 14 марта 2019

Мы можем использовать group_walk с print

library(dplyr)
dfC %>% 
  group_by(grp = group) %>% 
  filter(n() > 1) %>% 
  group_walk(print)
# A tibble: 2 x 6
#    id1   id2  name   dob   sex group
#  <int> <int> <int> <int> <int> <int>
#1     1     3     0     0     1     2
#2     1     4     1     1     1     2
# A tibble: 3 x 6
#    id1   id2  name   dob   sex group
#  <int> <int> <int> <int> <int> <int>
#1     2     4     0     1     0     4
#2     3     4     0     0     1     4
#3     2     3     0     0     0     4

data

dfC <- structure(list(id1 = c(1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 3L), id2 = c(2L, 
3L, 4L, 3L, 4L, 4L, 3L, 4L, 4L), name = c(0L, 0L, 1L, 0L, 0L, 
0L, 0L, 0L, 0L), dob = c(1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L), 
    sex = c(0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L), group = c(1L, 
    2L, 2L, 3L, 4L, 4L, 4L, 5L, 6L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...