通过在R中绑定具有匹配属性的行来替换缺少的“ NA”值

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

希望你们能用另一种简单的方法解决我的问题,超越自己。

我正在处理一个有一些清洁问题的大型数据集。为了您的理智,我制作了一个简单得多的示例。假设数据集看起来像这样:

  A        B       C     D     E     F     G     H
1 Albania  2015    10    NA    NA    NA    60    NA
2 Albania  2015    NA    NA    50    NA    NA    10
3 Greece   2016    30    NA    20    NA    NA    NA
4 Greece   2016    NA   400    NA    30    30    10
5 Greece   2017    NA    40    NA    NA    NA    NA
6 Greece   2017    20    NA    30    30    50    10
7 Albania  2015    NA   200    NA    40    NA    NA

请原谅,但我希望有一种解决方案可用于我的实际应用。如您所见,重复的行条目(例如Albania 2015)导致变量观测值分布在多行中。我正在寻找在前两列(国家和年份)中将具有匹配字符串值的行绑定在一起,并将展开的变量值(C-H)统一为一行。最后,数据框应如下所示:

  A           B     C     D     E     F     G     H
1 Albania  2015    10   200    50    40    60    10
2 Greece   2016    30   400    20    30    30    10
3 Greece   2017    20    40    30    30    50    10

有人可以载我到这里解决吗?谢谢!

r bind missing-data
1个回答
0
投票

我们可以按其余列按'A','B'和summarise分组

library(dplyr)
df1 %>%
    group_by(A, B) %>%
    summarise_at(vars(-group_cols()), ~ max(., na.rm = TRUE))

# A tibble: 3 x 8
# Groups:   A [2]
#  A           B     C     D     E     F     G     H
#  <chr>   <int> <int> <int> <int> <int> <int> <int>
#1 Albania  2015    10   200    50    40    60    10
#2 Greece   2016    30   400    20    30    30    10
#3 Greece   2017    20    40    30    30    50    10
© www.soinside.com 2019 - 2024. All rights reserved.