2016-04-12 2 views
1

Я ищу простую функцию, которая будет насчитывать дел в хронологическом порядке по другой переменной в R.Case Нумерация по переменной

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, даже если он не отсортирован.

Смежные вопросы