首先: 对不起,如果这个问题可能听起来很愚蠢...或者我的格式不正确,我是新手。 我有以下数据:
Value Date IDnum
1 230 2010-02-01 1
2 254 2011-07-07 2
3 300 2011-12-14 1
4 700 2011-01-23 3
5 150 2010-08-31 3
6 100 2010-05-06 1
使用以下代码创建:
Value <- c(230, 254, 300, 700, 150, 100)
Date <- as.Date(c("01/02/2010", "07/07/2011", "14/12/2011", "23/01/2011", "31/08/2010", "06/05/2010")
, "%d/%m/%Y")
IDnum <- c(001, 002, 001, 003, 003, 001)
MyData <- data.frame(Value, Date, IDnum)
我需要R来创建一个列,根据日期是否为给定IDnum的第一个,第二个等观察值来计算和枚举每一行。从而给我类似的东西:
Value Date IDnum Obs
1 230 2010-02-01 1 1
2 254 2011-07-07 2 1
3 300 2011-12-14 1 3
4 700 2011-01-23 3 2
5 150 2010-08-31 3 1
6 100 2010-05-06 1 2
由于
答案 0 :(得分:-1)
library(data.table)
df$Date <- as.Date(df$Date, format = "%Y-%m-%d")
setDT(df)[, Obs := order(Date),by = .(IDnum)]
library(dplyr)
df %>% group_by(IDnum) %>% mutate(Obs = order(Date))
# Value Date IDnum Obs
#1: 230 2010-02-01 1 1
#2: 254 2011-07-07 2 1
#3: 300 2011-12-14 1 3
#4: 700 2011-01-23 3 2
#5: 150 2010-08-31 3 1
#6: 100 2010-05-06 1 2