R语言 我如何将数据聚合在同一行上

ckocjqey  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(202)

在pivot_wider()之后,我得到了下面的data.frame。
如何将数据聚合在同一行上?

  1. CODE_C CODE_P LIB_COMPOSANT LIB_PRODUIT `2020-01-01` `2020-02-01` `2020-03-01` `2020-04-01` `2020-05-01` `2020-06-01`
  2. <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  3. 1 FABR**01 FABR** Abricot, 82 Abricot 1.32 NA NA NA NA NA
  4. 2 FABR**01 FABR** Abricot, 82 Abricot NA 1.10 NA NA NA NA
  5. 3 FABR**01 FABR** Abricot, 82 Abricot NA NA 3.33 NA NA NA
  6. 4 FABR**01 FABR** Abricot, 82 Abricot NA NA NA 4.71 NA NA
  7. 5 FABR**01 FABR** Abricot, 82 Abricot NA NA NA NA 4.38 NA
  8. 6 FABR**01 FABR** Abricot, 82 Abricot NA NA NA NA NA 3.25

字符串
要重现 Dataframe ,请执行以下操作:

  1. structure(list(CODE_C = c("FABR**01", "FABR**01", "FABR**01",
  2. "FABR**01", "FABR**01", "FABR**01"), CODE_P = c("FABR**", "FABR**",
  3. "FABR**", "FABR**", "FABR**", "FABR**"), LIB_COMPOSANT = c("Abricot, 82",
  4. "Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82"
  5. ), LIB_PRODUIT = c("Abricot", "Abricot", "Abricot", "Abricot",
  6. "Abricot", "Abricot"), `2020-01-01` = c(1.32446153846154, NA,
  7. NA, NA, NA, NA), `2020-02-01` = c(NA, 1.09984615384615, NA, NA,
  8. NA, NA), `2020-03-01` = c(NA, NA, 3.33157894736842, NA, NA, NA
  9. ), `2020-04-01` = c(NA, NA, NA, 4.70916279069767, NA, NA), `2020-05-01` = c(NA,
  10. NA, NA, NA, 4.37848648648649, NA), `2020-06-01` = c(NA, NA, NA,
  11. NA, NA, 3.24713953488372)), row.names = c(NA, -6L), class = c("tbl_df",
  12. "tbl", "data.frame"))


初始的pivot_wider()看起来像这样:

  1. pivot_wider(DONNEES_COMPOSANT,
  2. names_from = date,
  3. values_from = PRIX)


预期产出:

  1. CODE_C CODE_P LIB_COMPOSANT LIB_PRODUIT `2020-01-01` `2020-02-01` `2020-03-01` `2020-04-01` `2020-05-01` `2020-06-01`
  2. <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  3. 1 FABR**01 FABR** Abricot, 82 Abricot 1.32 1.10 3.33 4.71 4.38 3.25

mm5n2pyu

mm5n2pyu1#

我会推断你的输入数据是

  1. DONNEES_COMPOSANT <- structure(list(CODE_C = c("FABR**01", "FABR**01", "FABR**01", "FABR**01", "FABR**01", "FABR**01"), CODE_P = c("FABR**", "FABR**", "FABR**", "FABR**", "FABR**", "FABR**"), LIB_COMPOSANT = c("Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82", "Abricot, 82"), LIB_PRODUIT = c("Abricot", "Abricot", "Abricot", "Abricot", "Abricot", "Abricot"), date = c("2020-01-01", "2020-02-01", "2020-03-01", "2020-04-01", "2020-05-01", "2020-06-01"), PRIX = c(1.32446153846154, 1.09984615384615, 3.33157894736842, 4.70916279069767, 4.37848648648649, 3.24713953488372)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L))
  2. DONNEES_COMPOSANT
  3. # # A tibble: 6 × 6
  4. # CODE_C CODE_P LIB_COMPOSANT LIB_PRODUIT date PRIX
  5. # <chr> <chr> <chr> <chr> <chr> <dbl>
  6. # 1 FABR**01 FABR** Abricot, 82 Abricot 2020-01-01 1.32
  7. # 2 FABR**01 FABR** Abricot, 82 Abricot 2020-02-01 1.10
  8. # 3 FABR**01 FABR** Abricot, 82 Abricot 2020-03-01 3.33
  9. # 4 FABR**01 FABR** Abricot, 82 Abricot 2020-04-01 4.71
  10. # 5 FABR**01 FABR** Abricot, 82 Abricot 2020-05-01 4.38
  11. # 6 FABR**01 FABR** Abricot, 82 Abricot 2020-06-01 3.25

字符串
为了得到你想要的结果,我们需要将前四列指定为id_cols

  1. pivot_wider(DONNEES_COMPOSANT, id_cols = c(CODE_C, CODE_P, LIB_COMPOSANT, LIB_PRODUIT), names_from = "date", values_from = "PRIX")
  2. # # A tibble: 1 × 10
  3. # CODE_C CODE_P LIB_COMPOSANT LIB_PRODUIT `2020-01-01` `2020-02-01` `2020-03-01` `2020-04-01` `2020-05-01` `2020-06-01`
  4. # <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  5. # 1 FABR**01 FABR** Abricot, 82 Abricot 1.32 1.10 3.33 4.71 4.38 3.25

展开查看全部

相关问题