【发布时间】:2021-05-05 11:55:40
【问题描述】:
我有一个邻居数据框,其中一个单元格(比如说像素)a 邻居单元格b, c, d 等。这就像一个移动窗口,所以我有一个central_id,然后是neighbors,其中每个central 有独特的邻居。然后我有一个数据框,其中包含该单元格在特定时间的值。我需要比较每个中心单元格与其相邻单元格之间的值有什么差异,以及随着时间的推移,差异如何?
这是一个例子:
set.seed(3)
nbrs <- data.frame(central_id = c("a", "a", "a",
"b", "b", "b",
"c", "c", "d",
"e"),
nbrs_id = c("b", "c", "d",
"a", "c", "e",
"a", "b", "e", "d"))
# Generate data with values
df <- data.frame(year = rep(c(1, 2, 3), each = 5),
id = c("a", "b", "c", "d", "e"),
vals = 10+ rnorm(15))
我想要的数据框看起来像这样,保持清楚邻居是什么:
year central_id central_val nbrs_id nbrs_val
1 1 a 10.074955 b 8.354045
2 1 a 10.074955 c 11.774009
3 1 a 10.074955 d 10.765968
4 1 ...............
如何先高效过滤值数据集,通过id获取值,然后拼凑成表?我有大约 1000 万行,所以我正在寻找有效的东西。到目前为止,我只使用了一些简单的过滤来获取特定值,例如df%>% filter(year == 1 & id == 'a') 来获取我的vals,但这需要很长时间。我确定有更有效的方法吗?
【问题讨论】: