我在使用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
...
我的代码有什么问题?非常感谢您的帮助!
解决此问题的几种方法。
如果您想删除具有任何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