gpt4 book ai didi

通过将行与 R 中的匹配属性绑定(bind)来替换缺失的 "NA"值

转载 作者:行者123 更新时间:2023-12-04 10:53:59 24 4
gpt4 key购买 nike

我正在处理一个存在一些清洁问题的大型数据集。为了您的理智,我制作了一个更简单的示例。假设数据集如下所示:

  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)导致变量观测值分布在多行中。我希望在前两列(国家和年份)中绑定(bind)具有匹配字符串值的行,并将展开的变量值(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

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

最佳答案

我们可以按“A”、“B”和summarise 分组具有功能之一的其余列max/sum/min因为每列/组只有一个非 NA 元素

library(dplyr)
df1 %>%
group_by(A, B) %>%
summarise_at(vars(-group_cols()), ~ if(all(is.na(.))) NA
else 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

数据
df1 <- structure(list(A = c("Albania", "Albania", "Greece", "Greece", 
"Greece", "Greece", "Albania"), B = c(2015L, 2015L, 2016L, 2016L,
2017L, 2017L, 2015L), C = c(10L, NA, 30L, NA, NA, 20L, NA), D = c(NA,
NA, NA, 400L, 40L, NA, 200L), E = c(NA, 50L, 20L, NA, NA, 30L,
NA), F = c(NA, NA, NA, 30L, NA, 30L, 40L), G = c(60L, NA, NA,
30L, NA, 50L, NA), H = c(NA, 10L, NA, 10L, NA, 10L, NA)),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7"))

关于通过将行与 R 中的匹配属性绑定(bind)来替换缺失的 "NA"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com