R使用person.id将两行合并为一

问题描述 投票:0回答:1

我在使用person.id将更多行合并为一个行时遇到R的以下问题。我有一个像这样的数据集:

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
...

我的代码有什么问题?非常感谢您的帮助!

r rows id
1个回答
0
投票

解决此问题的几种方法。

如果您想删除具有任何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
© www.soinside.com 2019 - 2024. All rights reserved.