计算其他列中日期顺序的列

时间:2016-03-15 19:37:16

标签: r data.table

我想做一个简单的任务,无法弄清楚如何。 我有一个与此类似的数据帧(data.table):

date         code1 
2015-03-01     A
2015-03-02     A
2015-03-03     A
2015-03-01     B
2015-03-02     B
2015-03-03     B

我想要一个新的列,其日期顺序为code1,如下所示:

date         code1   order
2015-03-01     A       1
2015-03-02     A       2
2015-03-03     A       3
2015-03-01     B       1
2015-03-02     B       2
2015-03-03     B       3

提前感谢。

2 个答案:

答案 0 :(得分:1)

使用data.table

dt[, order := seq(.N), by = code1]

> dt
#         date code1 order
#1: 2015-03-01     A     1
#2: 2015-03-02     A     2
#3: 2015-03-03     A     3
#4: 2015-03-01     B     1
#5: 2015-03-02     B     2
#6: 2015-03-03     B     3

答案 1 :(得分:1)

我们可以使用dplyr

library(dplyr)
df %>%
   group_by(code1) %>%
   mutate(Order = row_number())
   date code1 Order
#      (chr) (chr) (int)
#1 2015-03-01     A     1
#2 2015-03-02     A     2
#3 2015-03-03     A     3
#4 2015-03-01     B     1
#5 2015-03-02     B     2
#6 2015-03-03     B     3

正如@alistaire所提到的,如果没有订购“日期”列,我们可以使用arrangegroup_by之后按'日期'排序,然后使用{{1}创建序列或使用mutate

rank

或使用df %>% group_by(code1) %>% mutate(Order = rank(date))

中方便的包装器
splitstackshape

library(splitstackshape) getanID(df, 'code1')[]

base R