2016-03-17 2 views
1

Я пытаюсь создать новую переменную в R, которая дает уникальное (упорядоченное) числовое значение для каждого наблюдения на основе повторяющихся значений в другой переменной , Я поставил ниже, как выглядят данные, и то, что мне тоже понравится. Может ли кто-нибудь помочь?Создание новой переменной, которая подсчитывает количество повторяющихся значений из другой переменной в R

name <- c("Alex", "Alex", "Alex", "Bill", "Bill", "Cathy") 
purchase <- c("hat", "bag", "book", "bag", "book", "book") 
individual_purchase_No <- c(1, 2, 3, 1, 2, 1) 

Что данные выглядит следующим образом:

purchase.data <- data.frame(name, purchase) 

То, что я хочу, чтобы данные выглядеть следующим образом:

purchase_order.data <- data.frame(name, purchase, individual_purchase_No) 

ответ

1

Вы можете сделать это с dplyr:

library(dplyr) 
purchase.data %>% group_by(name) %>% 
        mutate(individual_purchase_No = 1:n()) 
## Source: local data frame [6 x 3] 
## Groups: name [3] 
## 
##  name purchase individual_purchase_No 
## (fctr) (fctr)     (int) 
## 1 Alex  hat      1 
## 2 Alex  bag      2 
## 3 Alex  book      3 
## 4 Bill  bag      1 
## 5 Bill  book      2 
## 6 Cathy  book      1 

Например, базовое R-решение:

purchase.data$individual_purchase_No <- sequence(table(purchase.data$name)) 

Таблица подсчитывает количество вхождений каждого имени, и последовательность затем создает для каждого номера n последовательности 1:n.

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