按时间顺序对r数据帧中的4行进行排序

按时间顺序对r数据帧中的4行进行排序,r,R,我有一个数据框,第一列作为id,第二列作为日期。其他3列包含一些其他随机值 数据框的大小=5列160000行 我想根据日期的时间顺序和第二列中的记录对前4条记录进行排序。 4条记录中最老的应排在第一位,最新的应排在最后。 在这之后,我必须继续对第四组中的所有行进行排序 ID Date A B C X 10/27/2011 12 47 78 Y 09/28/2015 27 14 41 Z 01/14/2013 24 25 45 W 0

我有一个数据框,第一列作为id,第二列作为日期。其他3列包含一些其他随机值

数据框的大小=5列160000行

我想根据日期的时间顺序和第二列中的记录对前4条记录进行排序。 4条记录中最老的应排在第一位,最新的应排在最后。 在这之后,我必须继续对第四组中的所有行进行排序

ID  Date        A   B   C   
X   10/27/2011  12  47  78
Y   09/28/2015  27  14  41
Z   01/14/2013  24  25  45
W   04/21/2005  14  74  21
-
-
-
-
upto 160000 rows



 output

    ID  Date        A   B   C
    W   04/21/2005  14  74  21
    X   10/27/2011  12  47  78
    Z   01/14/2013  24  25  45
    Y   09/28/2015  27  14  41

-
-
-
upto 160000 rows
有办法吗

我现在正在使用它,但无法将它分成4行的组

d[order(as.Date(d$df, format="%d/%m/%Y")),]
列的数据类型为整数。我试着把它读作日期


谢谢

您需要添加一个索引列,例如每四行添加一个重复值,然后您可以使用它分组排序

我在这里提供了一个示例,您可以使用日期列修改它,但这是相同的想法

d <- data.frame(ID = 1:16, df = as.integer(runif(16, 0,30)))

# add an index
d$by <- rep(1:(nrow(d)/4), each = 4)
d

# sort by the index
sort.ind <- by(d, d$by, function(x) x[order(x$df, decreasing = T),])

# bind the sorted data frames together
d.sort <- do.call(rbind, sort.ind)

d.sort

d您可以使用整数除法
%/%
为每组四个人提供一个“虚拟”索引:

# recreate a random DF
set.seed(123)
DF <- 
data.frame(ID=paste0('ID',1:10),
           Date=c("21/06/2017", "23/06/2017", "10/06/2017", "18/06/2017", "27/06/2017", 
                  "01/06/2017", "13/06/2017", "07/06/2017", "24/06/2017", "05/06/2017"),
           A=rnorm(10,4,100))

# define virtual indexes
groupsOf4 <- (1:nrow(DF)-1) %/% 4
# order by groupsOf4 and then by Date
sortedDF <- DF[order(groupsOf4, as.Date(DF$Date, format="%d/%m/%Y")),]

你能提供一个可复制的例子吗?你的日期栏是date/POSIXct等类型还是字符@西蒙尼是对的。。。我们需要一个可复制的例子谢谢我添加了一个有问题的例子。。。您的格式
“%d/%m/%Y”
与您的示例数据不一致,这些数据看起来更像
“%m/%d/%Y”
。感谢DigeMail的帮助
> DF
     ID       Date          A
1   ID1 21/06/2017  -52.04756
2   ID2 23/06/2017  -19.01775
3   ID3 10/06/2017  159.87083
4   ID4 18/06/2017   11.05084
5   ID5 27/06/2017   16.92877
6   ID6 01/06/2017  175.50650
7   ID7 13/06/2017   50.09162
8   ID8 07/06/2017 -122.50612
9   ID9 24/06/2017  -64.68529
10 ID10 05/06/2017  -40.56620

> sortedDF
     ID       Date          A
3   ID3 10/06/2017  159.87083
4   ID4 18/06/2017   11.05084
1   ID1 21/06/2017  -52.04756
2   ID2 23/06/2017  -19.01775
6   ID6 01/06/2017  175.50650
8   ID8 07/06/2017 -122.50612
7   ID7 13/06/2017   50.09162
5   ID5 27/06/2017   16.92877
10 ID10 05/06/2017  -40.56620
9   ID9 24/06/2017  -64.68529