我在名为R
的{{1}}中有以下数据框:
df
我要做的是创建一个名为id<-c(1,1,1,1,2,3,3,3,3)
day<-c(1,2,4,5,2,2,3,6,8)
payment<-c(5,10,3,30,23,40,20,10,50)
df<-data.frame(id,day,payment)
id day payment
1 1 5
1 2 10
1 4 3
1 5 30
2 2 23
3 2 40
3 3 20
3 6 10
3 8 50
的新变量,它表示相关soFarMax
在当天之前所做的最高付款:
id
非常感谢您对此的帮助。
答案 0 :(得分:1)
SoFarMax <- unlist(tapply(df[,3], df[,1], cummax))
如果您的订单前几天没有必要按顺序存在于您的数据框中:
df_order <- df[order(df[,2]),]
SoFarMax <- unlist(tapply(df_order[,3], df_order[,1], cummax))
答案 1 :(得分:0)
由于@Frank,关键显然是GLFW/glfw3native.h
。以下是我设法提出的内容:
cummax
答案 2 :(得分:0)
使用dplyr
df %>%
group_by(id) %>%
mutate(SoFarMax = cummax(payment))
答案 3 :(得分:0)
我认为你需要使用窗口函数将其与ID分组(使用 dplyr或子集)
然后使用cummax(x)
或者您可以使用逻辑
df$sofarmax<-ifelse(df$payment[i]>df$payment[i-1],df$payment[i],df$payment[i-1])