我确定有一种更简单的方法可以实现这一目标。我有以下数据框:
B <- c(1, 1, 1, 0, 1, 2, 2, 0, 0, 0)
A <- c(1:10)
df <- as.data.frame(cbind(A,B))
我想要做的是添加应用B列的第三列(C),除非B列为0,在这种情况下,将A列的百分比变化应用于C列的上一个结果。
这是我做的:
library(Hmisc)
df$New <- ifelse(df$B!=0, df$B, df$A/Lag(df$A, shift=1)*Lag(df$B, shift=1))
df$New2 <- ifelse(df$New !=0, df$New, df$A/Lag(df$A, shift=1)*Lag(df$New, shift=1))
df$New3 <- ifelse(df$New2 !=0, df$New2, df$A/Lag(df$A, shift=1)*Lag(df$New2, shift=1))
df$C <- pmax(df$New, df$New2, df$New3)
df<- df[c(1,2,6)]
基本上,我需要根据以前的计算结果来计算列,所以可能是开心的,但不确定。