R:如何计算每个ID在变量中到目前为止看到的最大值

时间:2017-02-15 04:00:39

标签: r

我在名为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

非常感谢您对此的帮助。

4 个答案:

答案 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])