-1

I have data frame as below

name    value   etc1    etc2
A       9       1       X
A       10      1       X
A       11      1       X
B       2       1       Y
B       40      1       Y
B       50      1       Y
A       2       4       X
A       40      4       X
A       50      4       X

I need to changed the value in etc1 to different value, and the expected output is

name    value   etc1    etc2
A       9       1       X
A       10      2       X
A       11      3       X
B       2       1       Y
B       40      2       Y
B       50      3       Y
A       2       4       X
A       40      5       X
A       50      7       X

Any hints?

1 Answers1

1

You can group_by name and modify etc1 so it runs from 1 : the number of rows for each name.

library(dplyr)
df %>% group_by(name) %>% mutate(etc1 = 1:n())
# A tibble: 6 × 4
# Groups:   name [2]
  name  value  etc1 etc2 
  <chr> <int> <int> <chr>
1 A         9     1 X    
2 A        10     2 X    
3 A        11     3 X    
4 B         2     1 Y    
5 B        40     2 Y    
6 B        50     3 Y    
user438383
  • 5,716
  • 8
  • 28
  • 43