Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dplyr: Generate row number/row position in group_by [duplicate]

Tags:

I have a dataset and I want to generate the row position by group. For example

library(data.table)  data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10), Category=c("M","M","M","M","F","F","F","M","M","F")) 

I group by the Category and want to create column that is the row position by group. Something like below or with data.table

dataByGroup %>% group_by(Category) %>% mutate(positionInCategory = 1:nrow(Category)) 

Unable to work out how to achieve this?

Desired output:

| Position|Category | positionInCategory| |--------:|:--------|------------------:| |        1|M        |                  1| |        2|M        |                  2| |        3|M        |                  3| |        4|M        |                  4| |        5|F        |                  1| |        6|F        |                  2| |        7|F        |                  3| |        8|M        |                  5| |        9|M        |                  6| |       10|F        |                  4| 
like image 395
iboboboru Avatar asked Apr 27 '16 15:04

iboboboru


1 Answers

Try the following:

library(data.table) library(dplyr)  data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10),                  Category=c("M","M","M","M","F","F","F","M","M","F"))  cleanData <- data %>%   group_by(Category) %>%   mutate(positionInCategory = 1:n()) 
like image 195
user1357015 Avatar answered Sep 21 '22 11:09

user1357015