我想在R中的数据框中添加另一列,包含其他列相同时的订单数量之和。
例如,如果这是我的数据框:
orderdate / orderhour / deliverydate / deliveryhour / 订单 / 新栏目:总和
周三/ 12:00 /周五/ 17:00 / 5 / 0
星期三/ 12月/星期五/ 17:00 / 2 / 7
星期四/ 13:00 /星期五/ 17:00 / 3 / 3
星期四/ 13:00 /星期五/ 19:00 / 1 / 1
最后一列是我要添加的列。最后,可以删除零为零的行,因此我不再有重复的数据。因此,只有所有列匹配(订单除外),才应采用订单总和。在其他情况下,可以保持相同的值。
有人可以帮帮我吗?
提前致谢!
答案 0 :(得分:1)
# example data
df = read.table(text = "
orderdate/orderhour/deliverydate/deliveryhour/orders
wednesday/12:00/Friday/17:00/5
wednesday/12:00/Friday/17:00/2
thursday/13:00/Friday/17:00/3
thursday/13:00/Friday/19:00/1
", sep="/", header=T, stringsAsFactors=F)
library(dplyr)
df %>%
group_by(orderdate, orderhour, deliverydate, deliveryhour) %>% # for each combination of those variables
mutate(sum_orders = ifelse(n() > 1 & # if there are multiple rows
row_number() == 1, # and this is row 1
0, # use a zero
cumsum(orders))) %>% # else use the cum sum
ungroup() # forget the grouping
# # A tibble: 4 x 6
# orderdate orderhour deliverydate deliveryhour orders sum_orders
# <chr> <chr> <chr> <chr> <dbl> <dbl>
# 1 wednesday 12:00 Friday 17:00 5.00 0
# 2 wednesday 12:00 Friday 17:00 2.00 7.00
# 3 thursday 13:00 Friday 17:00 3.00 3.00
# 4 thursday 13:00 Friday 19:00 1.00 1.00