[英]How to add values from 2 rows together based on 2 conditions R.?
所以在类别下,有类别 c 和类别 c-ETS。 如果年份和月份相同,我想将两行的值加在一起并返回类别 c 下的值。
例如,对于 2014 年一月,它将是 309 + 123 = 432. 432
最终结果应该是第二张图片中的内容。
应该在 r 上的结果如下
您尚未共享用于演示和检查代码的数据。 但是,这应该有效。
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 是你的 dataframe
#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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.