Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中为已排序的日期添加排名列?_R_Sorting_Date_Rank - Fatal编程技术网

如何在R中为已排序的日期添加排名列?

如何在R中为已排序的日期添加排名列?,r,sorting,date,rank,R,Sorting,Date,Rank,我在R中使用了这个代码: df[带有(df,订单(ID,日期)),] 为数据框中每个不同ID的日期值排序。现在我想在有序日期值旁边添加一个秩列(1到n),其中秩=1是每个不同ID的最早日期,秩=n是最近日期 我看到过关于添加排名列的问题,但在使用日期值排序时没有。如何使用上面的代码添加此排名列?谢谢 这里有一个dplyr方法: library(dplyr) # Fake data set.seed(5) dat = data.frame(date=sample(seq(as.Date("201

我在R中使用了这个代码:

df[带有(df,订单(ID,日期)),]

为数据框中每个不同ID的日期值排序。现在我想在有序日期值旁边添加一个秩列(1到n),其中秩=1是每个不同ID的最早日期,秩=n是最近日期


我看到过关于添加排名列的问题,但在使用日期值排序时没有。如何使用上面的代码添加此排名列?谢谢

这里有一个
dplyr
方法:

library(dplyr)

# Fake data
set.seed(5)
dat = data.frame(date=sample(seq(as.Date("2015-01-01"), as.Date("2015-01-31"), 
                                 "1 day"), 12),
                 ID=rep(LETTERS[1:3], c(2,6,4)))

dat %>% group_by(ID) %>%
  mutate(rank = rank(date)) %>%
  arrange(date)

         date ID rank
1  2015-01-07  A    1
2  2015-01-21  A    2
3  2015-01-03  B    1
4  2015-01-08  B    2
5  2015-01-14  B    3
6  2015-01-19  B    4
7  2015-01-20  B    5
8  2015-01-27  B    6
9  2015-01-06  C    1
10 2015-01-10  C    2
11 2015-01-22  C    3
12 2015-01-29  C    4

以下是一种
dplyr
方法:

library(dplyr)

# Fake data
set.seed(5)
dat = data.frame(date=sample(seq(as.Date("2015-01-01"), as.Date("2015-01-31"), 
                                 "1 day"), 12),
                 ID=rep(LETTERS[1:3], c(2,6,4)))

dat %>% group_by(ID) %>%
  mutate(rank = rank(date)) %>%
  arrange(date)

         date ID rank
1  2015-01-07  A    1
2  2015-01-21  A    2
3  2015-01-03  B    1
4  2015-01-08  B    2
5  2015-01-14  B    3
6  2015-01-19  B    4
7  2015-01-20  B    5
8  2015-01-27  B    6
9  2015-01-06  C    1
10 2015-01-10  C    2
11 2015-01-22  C    3
12 2015-01-29  C    4

你能
dput
你的数据让读者有可复制的例子吗?你能
dput
你的数据让读者有可复制的例子吗?谢谢!如果ID的数量不相等怎么办?each=的作用是什么?无论ID的数量或每个ID的日期数量如何,这都会起作用。我已更新了答案,以包含每个ID的不同日期数量。是否可以为给定ID重复日期?如果是这样,您还需要选择一种断开领带的方法。请参见
rank
帮助中的
ties.method
。谢谢!如果ID的数量不相等怎么办?each=的作用是什么?无论ID的数量或每个ID的日期数量如何,这都会起作用。我已更新了答案,以包含每个ID的不同日期数量。是否可以为给定ID重复日期?如果是这样,您还需要选择一种断开领带的方法。请参见
rank
帮助中的
ties.method