我有一个数据框df,如下所示:
id t Happiness Wealth
1 1 5 100
2 1 5 100
3 1 5 100
1 2 3 70
2 2 9 170
3 2 2 60
有没有一种方法可以对数据进行子集处理,以便我可以创建一个新变量来代表上次个人(id)的财富?因此,第二个人在时间2的值将为100。
答案 0 :(得分:0)
您还可以通过简单地合并来实现相同目的:
df <- data.frame(id = c(1, 1, 2, 2),
t = c(1, 2, 1, 2),
wealth = c(10, 15, 12, 17))
previous <- df
previous[,"t"] <- previous[,"t"] +1
df <- merge(df, previous, by = c("id", "t"), all = TRUE, suffixes = c("_current", "_previous"))
na.omit(df)
id t wealth_current wealth_previous
2 1 2 15 10
5 2 2 17 12