r - 在数据框中选择观察值并反转它们的顺序

标签 r dataframe

我有一个巨大的数据框,其中包含对几百个人的几个变量的许多时间相关观察。每个人在 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 保持在 ac 等之间)?

最佳答案

使用 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/

相关文章:

r - 如何在 R 的时间序列中滞后日期索引?

r - 如何在生成的 PowerPoint 中显示 R 数据框

python - 在 pandas 系列中使用前一个 "row"的值

python - Pandas 中的行未正确附加

python - Dataframe - 在循环中从变量列表中获取列名称

r - 将函数参数传递给 dplyr 和 ggplot

r - 使用 fill() 函数将名称填充到列中

r - 折叠一个数据框列表并与 R 中的另一个数据框列表组合

python - Pandas 时间子集时间序列 - 特定时间以上的日期

python - 有没有办法将先前计算的行值与 Pandas Dataframe 中不同列的总和一起使用?