如何使用dplyr创建使用其自身滞后值的列
假设我有以下数据帧如何使用dplyr创建使用其自身滞后值的列,r,dplyr,R,Dplyr,假设我有以下数据帧 c1<- c(1:10) c2<- c(11:20) df<- data.frame(c1,c2) c1 c2 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 是否可以使用dplyr执行此操作?我尝试过几种方法,但都没有成功。如果您有任何建议,我们将不胜感激。这是cumsum累积总和的一个很好的用法 c3 = lag(cumsum(c2 - c1), defau
c1<- c(1:10)
c2<- c(11:20)
df<- data.frame(c1,c2)
c1 c2
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
10 20
是否可以使用dplyr执行此操作?我尝试过几种方法,但都没有成功。如果您有任何建议,我们将不胜感激。这是
cumsum
累积总和的一个很好的用法
c3 = lag(cumsum(c2 - c1), default = 0)
不要把
c3
看作是c3(-1)+c2-c1,把它看作是c3(n)=求和(从1到n-1)c2(i)-c1(i)这是cumsum
累积求和的一个很好的用法
c3 = lag(cumsum(c2 - c1), default = 0)
不要把
c3
想象成c3(-1)+c2-c1,把它想象成c3(n)=和(从1到n-1)c2(i)-c1(i)这会创建列c3。假设第一个条目始终为0,因为没有前面的元素
df$c3 <- df$c2 - df$c1
df[1,"c3"] <- 0
df$c3 <- cumsum(df$c3)
这将创建列c3。假设第一个条目始终为0,因为没有前面的元素
df$c3 <- df$c2 - df$c1
df[1,"c3"] <- 0
df$c3 <- cumsum(df$c3)
使用
dplyr
:df%>%变异(c3=lag(cumsum(c2-c1),默认值=0))
我没有想到使用cumsum()。感谢所有的答案。对于dplyr
:df%>%mutate(c3=lag(cumsum(c2-c1),default=0))
我没有想到要使用cumsum()。感谢所有的答案。这在这种特殊情况下有效,因为c2
和c1
之间的差异是恒定的-但解决问题的方法是,您需要删除最后一个元素,并在前面附加0,使其正常工作,不只是将第一个元素替换为0。这在这种特殊情况下有效,因为c2
和c1
之间的差异是恒定的-但是OP解决问题的方式是,您需要删除最后一个元素并将0附加到前面,这样它才能正常工作,而不仅仅是将第一个元素替换为0。