Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a data frame in which I want to add an index e.g. 1...n for each factor in my data frame. Here is an example with some dummy data.

factor
a        
a         
a         
a        
a        
b        
b        
b        
b        
b
c
c
c
c

I would like to add an additional column which adds an index 1 to n for each factor separately. The resulant data frame would look like:

factor  index
a        1
a        2 
a        3 
a        4
a        5
b        1
b        2
b        3
b        4
b        5 
c        1
c        2
c        3
c        4

Can anyone explain how to do so? Thanks in advance.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
321 views
Welcome To Ask or Share your Answers For Others

1 Answer

You could use ave function:

your_data <- data.frame(
     factor=factor(rep(letters[1:3], times = c(5,5,4)))
)
your_data$index <- ave(rep(NA, nrow(your_data)), your_data$factor, FUN=seq_along)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...