【发布时间】:2020-02-26 20:51:27
【问题描述】:
使用以下数据集,在不使用dplyr、(@ 987654323@欢迎!)?
更具体地说,对于 ID 列中的每个 ID,我想将其在 value 列中的相对值与 value 列中的值相对于其他观察值之间的所有可能差异相同的ID 号码(在同一年内)。也就是说,我想要一个具有相同ID 和相同t 的对(ID-ID2)具有所有差异的数据框。
虚拟数据集是:
df <- data.frame(ID = rep(rep(c(1,2,3,4),3),2), ID2 = rep(c(rep(5,4), rep(6,4),
rep(7,4)),2), t = c(rep(1,12), rep(2,12)), value = runif(12) )
ID ID2 t value
1 1 5 1 0.6991799
2 2 5 1 0.0879940
3 3 5 1 0.5876535
4 4 5 1 0.2105821
5 1 6 1 0.9483806
6 2 6 1 0.5076218
7 3 6 1 0.1790157
8 4 6 1 0.5229501
9 1 7 1 0.7365285
10 2 7 1 0.5298920
11 3 7 1 0.6172215
12 4 7 1 0.3365588
13 1 1 2 0.6991799
14 2 5 2 0.0879940
15 3 5 2 0.5876535
16 4 5 2 0.2105821
17 1 6 2 0.9483806
18 2 6 2 0.5076218
19 3 6 2 0.1790157
20 4 6 2 0.5229501
21 1 7 2 0.7365285
22 2 7 2 0.5298920
23 3 7 2 0.6172215
24 4 7 2 0.3365588
应该在value 列上处理差异。然后应该像这样创建新的data.frame,其中第一行中的1(5)指的是ID = 1和ID2 = 5在年份t = 1中的行。
ID ID2 t value
1 1(5) 6 1 0.6991799 - 0.9483806
2 1(5) 7 1 0.6991799 - 0.7365285
3 1(6) 7 1 0.9483806 - 0.7365285
4 2(5) 6 1 0.0879940 - 0.5076218
2 2(5) 7 1 0.0879940 - 0.5298920
3 2(6) 7 1 0.5076218 - 0.5298920
...
【问题讨论】:
-
你能给我们一个预期输出的样本吗?比破译您对操作的解释更容易。
-
我的理解是否正确,您想计算跨 t 的不同 ID/ID2 对之间的价值差异?您想如何处理
t-组中重复的IDs?例如,请参见第 1、5 和 9 行。它们具有相同的 ID 值。 -
抱歉解释不佳:我重写了问题并添加了一个示例。谢谢!
-
对于像
runif这样的随机数据,总是set.seed。否则,我们无法复制您的样品。
标签: r loops data.table difference