我有一个巨大的数据框,其中包含对几百个人的几个变量的许多时间相关观察。每个人在 ID
中都有一个唯一的编号。柱子。我将使用下面模拟的数据,其结构类似于我的数据来问我的问题:
set.seed(123)
dat <- data.frame(ID = rep(letters[1:10], each = 10),
time = rep(c(1:10), times = 10),
var1 = rnorm(100))
请注意,在真实数据中,每个
ID
的实际观察次数是不同的。 .假设有几个人(例如,
ID
s:b、e 和 g)我需要对其进行观察并完全“翻转”或“颠倒”顺序,并且仍然保留每个人的数据time
.我的意思是(以个人 b 为例)个人 b 在数据框中的第一个观察结果将是“时间间隔”10 而不是“时间间隔”1 的数据。换句话说,数据看起来像这样:ID time Var1
a 1
a 2
… …
a 10
b 10
b 9
b 8
… …
b 1
c 1
c 2
c 3
c 4
ect...
执行此操作并保持其在数据框中的位置的最安全方法是什么(即
b
保持在 a
和 c
等之间)?
最佳答案
使用 data.table
:
library(data.table)
setDT(dat)
ids.to.reverse <- c('b', 'e', 'g')
dat[, if(ID %in% ids.to.reverse) .SD[.N:1] else .SD, by='ID']
关于r - 在数据框中选择观察值并反转它们的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61899353/