2016-04-12 54 views
1

我在尋找一個簡單的函數,將在按時間順序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 
+2

你可以用'?ave'用'FUN = seq_along' –

回答

0

這裏是一個緊湊的選擇與splitstackshape

library(splitstackshape) 
getanID(df1, "Age")[] 

或者使用dplyr

library(dplyr) 
df1 %>% 
    group_by(Age) %>% 
    mutate(Case = row_number()) 
+1

謝謝,完美的作品! – Microsim

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列進行排序,即使是沒有排序。