【发布时间】:2021-06-23 03:41:44
【问题描述】:
所以在类别下,有类别 c 和类别 c-ETS。 如果年份和月份相同,我想将两行的值相加,并返回 c 类下的值。
例如,对于 2014 年的一月,它将是 309 + 123 = 432. 432
最终结果应该是第二张图片中的内容。
应该在 r 上的结果是每个关注者
【问题讨论】:
-
请使用 dput() 分享可重现的示例
标签: r variable-assignment
所以在类别下,有类别 c 和类别 c-ETS。 如果年份和月份相同,我想将两行的值相加,并返回 c 类下的值。
例如,对于 2014 年的一月,它将是 309 + 123 = 432. 432
最终结果应该是第二张图片中的内容。
应该在 r 上的结果是每个关注者
【问题讨论】:
标签: r variable-assignment
您尚未共享用于演示和检查代码的数据。不过这应该可行。
df %>% group_by(Year, Month, category = ifelse(category %in% c("Category C", "Category C-ETS"), "Category C", category)) %>% summarise(number = sum(number))
【讨论】:
解决此问题的一种方法是将具有“Category C-Ets”的单元格重命名为“Category C”,然后使用 grroup_by 并从 Dplyr 汇总 这段代码解决了这个问题
library(dplyr)
df[df$category == "Category C-Ets", "category"] <-"Category C"
df <- df %>%
group_by(year, month, category) %>%
summarize(number = sum(number))
看看下面如何解决这个问题
假设 df 是您的数据框,这就是我可以处理此任务的方法
#sample dataframe
df <- data.frame(year=c(2014,2014,2014,2014,2014,2014,2014,2014,2014,2014),
month = c(1,1,1,1,1,2,2,2,2,2),
category = c("Category C", "Category A", "Category C-Ets","CategoryB", "Category D", "Category C", "Category A", "Category C-Ets","CategoryB", "Category D"),
number = seq(100,1000,100))
print(df)
#this is how the row dataframe looks
year month category number
1 2014 1 Category C 100
2 2014 1 Category A 200
3 2014 1 Category C-Ets 300
4 2014 1 CategoryB 400
5 2014 1 Category D 500
6 2014 2 Category C 600
7 2014 2 Category A 700
8 2014 2 Category C-Ets 800
9 2014 2 CategoryB 900
10 2014 2 Category D 1000
然后用“C 类”替换“C 类-Ets”
df[df$category == "Category C-Ets", "category"] <-"Category C"
print(df)
year month category number
1 2014 1 Category C 100
2 2014 1 Category A 200
3 2014 1 Category C 300
4 2014 1 CategoryB 400
5 2014 1 Category D 500
6 2014 2 Category C 600
7 2014 2 Category A 700
8 2014 2 Category C 800
9 2014 2 CategoryB 900
10 2014 2 Category D 1000
现在您可以按年月和类别对它们进行分组并对数字求和
df <- df %>%
group_by(year, month, category) %>%
summarize(number = sum(number))
print(df)
year month category number
<dbl> <dbl> <chr> <dbl>
1 2014 1 Category A 200
2 2014 1 Category C 400
3 2014 1 Category D 500
4 2014 1 CategoryB 400
5 2014 2 Category A 700
6 2014 2 Category C 1400
7 2014 2 Category D 1000
8 2014 2 CategoryB 900
【讨论】: