我正在寻找一个简单的函数,它将按时间顺序对R中的另一个变量进行编号。
For example:
ID Age Case
1 30 1
2 30 2
3 30 3
4 31 1
5 31 2
6 32 1
7 32 2
答案 0 :(得分:0)
以这种方式:
df <- data.frame(ID=c(1L,2L,3L,4L,5L,6L,7L),Age=c(30L,30L,30L,31L,31L,32L,32L));
df$Case <- ave(df$ID,df$Age,FUN=order);
df;
## ID Age Case
## 1 1 30 1
## 2 2 30 2
## 3 3 30 3
## 4 4 31 1
## 5 5 31 2
## 6 6 32 1
## 7 7 32 2
使用order()
作为分组功能可确保Case
值根据ID
列进行排序,即使它未排序。
答案 1 :(得分:0)
以下是splitstackshape
library(splitstackshape)
getanID(df1, "Age")[]
或使用dplyr
library(dplyr)
df1 %>%
group_by(Age) %>%
mutate(Case = row_number())