【发布时间】:2021-11-08 02:35:04
【问题描述】:
我有这样的数据:
stim1 stim2
1: 2 3
2: 1 3
3: 2 1
4: 1 2
5: 3 1
structure(list(stim1 = c(2L, 1L, 2L, 1L, 3L),
stim2 = c(3L, 3L, 1L, 2L, 1L)),
row.names = c(NA, -10L), class = c("data.table", "data.frame"))
我的目标是添加两列:一列用于“stim1”,另一列用于“stim2”。对于两列的每一行,我想在任一列中找到其值的上一次出现,然后在相反的列中获取值。
例如,第 3 行的“stim1”为 2。之前出现的 2 在第 1 行的“stim1”中。该行另一列的值为 3。所以Prev1[3] 为 3。
另一个例子:在第 4 行,'stim1' 为 1。之前出现的 1 在第 3 行的'stim2'中。该行另一列中的值为 2。所以Prev1[4] 为 2。
期望的输出:
stim1 stim2 Prev1 Prev2
1: 2 3 <NaN> <NaN>
2: 1 3 <NaN> 2
3: 2 1 3 3
4: 1 2 2 1
5: 3 1 1 2
【问题讨论】:
标签: r dataframe dplyr data.table