根据数据框中不同行的变量值在R中创建新变量

时间:2018-11-27 16:54:18

标签: r

我有一个数据框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。

1 个答案:

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