R 使用 person.id 将两行合并为一行
R combining two rows into one using person.id
我在使用 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
...
我的代码有什么问题?
非常感谢您的帮助!!
解决这个问题的几种方法。
如果您想删除具有任何 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
我在使用 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
...
我的代码有什么问题? 非常感谢您的帮助!!
解决这个问题的几种方法。
如果您想删除具有任何 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