我想做一个简单的任务,无法弄清楚如何。 我有一个与此类似的数据帧(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
提前感谢。
答案 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所提到的,如果没有订购“日期”列,我们可以使用arrange
在group_by
之后按'日期'排序,然后使用{{1}创建序列或使用mutate
rank
或使用df %>%
group_by(code1) %>%
mutate(Order = rank(date))
splitstackshape
或library(splitstackshape)
getanID(df, 'code1')[]
base R