R объединяет две строки в одну, используя person.id - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть следующая проблема с R в объединении нескольких строк в один с использованием person.id. У меня есть такой набор данных:

person.id   Treatment   easy_comp   medium_comp   age   female
1_1          Happy         NA            NA        NA     NA
1_1          Happy         5             2         NA     NA
1_1          Happy         NA            NA        NA     NA
1_1          Happy         NA            NA        29     1
1_2          Happy         NA            NA        NA     NA
1_2          Happy         3             5         NA     NA
1_2          Happy         NA            NA        NA     NA
1_2          Happy         NA            NA        25     0
1_3
...

Я хочу получить что-то вроде:

person.id   Treatment   easy_comp   medium_comp   age   female
1_1          Happy         5             2         29     1
1_2          Happy         3             5         25     0
1_3
...

Если я запускаю:

dt_remain1=dt_remain %>%
  group_by(person.id) %>%
  fill(easy_comp,medium_comp,female,age,.direction="up") %>%
  distinct

Я получаю что-то вроде :

person.id   Treatment   easy_comp   medium_comp   age   female
1_1          Happy         5             2         29     1
1_1          Happy         NA            NA        29     1
1_2          Happy         3             5         25     0
1_2          Happy         NA            NA        25     0
1_3
...

В чем проблема с моими кодами? Большое спасибо за вашу помощь !!

1 Ответ

0 голосов
/ 28 апреля 2020

Несколько способов решить эту проблему.

Если вы хотите избавиться от каких-либо строк с любыми значениями NA, мы можем добавить na.omit в вашу цепочку:

dd %>%
    group_by(person.id) %>%
    fill(easy_comp,medium_comp,female,age,.direction="up") %>%
    na.omit() %>% 
    distinct()

В противном случае мы можем сказать direction = "updown", чтобы заполнить оба направления:

dd %>%
    group_by(person.id) %>%
    fill(easy_comp,medium_comp,female,age,.direction="updown")  %>%
    distinct()

Любой подход приводит к тому же:

#   person.id Treatment easy_comp medium_comp   age female
#   <chr>     <chr>         <int>       <int> <int>  <int>
# 1 1_1       Happy             5           2    29      1
# 2 1_2       Happy             3           5    25      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...