gpt4 book ai didi

r - 合并/求和 R 中的行

转载 作者:行者123 更新时间:2023-12-02 15:49:40 25 4
gpt4 key购买 nike

我有一个大型数据集,每一行代表不同的类别。但是,某些类别拼写错误或命名错误导致同一类别出现两行。我想合并特定行并对其求和。

东风

<表类="s-表"><头>类别202120222023<正文>纹理890900978干果和蔬菜455558干果和蔬菜667488

预期输出

<表类="s-表"><头>类别202120222023<正文>纹理890900978干果和蔬菜11162146

我一直在尝试类似下面的策略,但未能成功。

DF %>% 
mutate_at(c(2021:2023), cumsum(starts_with("Dried Fruits")))

数据:

df <- data.frame(
stringsAsFactors = FALSE,
category = c("Grain",
"Dried Fruits and Veg","Dried Fruits & Veg"),
"2021" = c(890L, 45L, 66L),
"2020" = c(900L, 55L, 74L),
"2023" = c(978L, 58L, 88L)
)

最佳答案

这个解决方案可能只适用于这个给定的场景,因为我不知道类别列中还有哪些其他类型的拼写错误和命名错误,但是一旦你清理类别列以包含所有唯一类别,你可以简单地做按类别列的group_by,然后对其余列进行汇总,如下所示,

library(dplyr)
library(stringr)

df <- data.frame(
stringsAsFactors = FALSE,
category = c("Grain",
"Dried Fruits and Veg","Dried Fruits & Veg"),
"2021" = c(890L, 45L, 66L),
"2020" = c(900L, 55L, 74L),
"2023" = c(978L, 58L, 88L)
)

df %>%
mutate(
category = str_replace(category, "&", "and")
) %>%
group_by(category) %>%
summarise(
across(X2021:X2023, sum)
)
#> # A tibble: 2 × 4
#> category X2021 X2020 X2023
#> <chr> <int> <int> <int>
#> 1 Dried Fruits and Veg 111 129 146
#> 2 Grain 890 900 978

reprex package 创建于 2022-07-11 (v2.0.1)

希望这对您有所帮助。

关于r - 合并/求和 R 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72938527/

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