У меня есть фрейм данных:
df <- data.frame(sample = c('S1', 'S1', 'S2', 'S3', 'S4', 'S4'), event = c(1,1,4,2,3,12), start = c(100, 20, 30, 500, 300, 200), end = c(350, 480, 60, 700, 300, 200))
sample event start end
S1 1 100 350
S1 1 20 480
S2 4 30 60
S3 2 500 700
S4 3 300 300
S4 12 200 200
Я хочу подсчитать количество отдельных events
в каждом sample
и изменить имя sample
, чтобы отразить это.
Например, sample
S4
имеет два разных события: 3
и 12
.Здесь я хотел бы добиться этого результата:
sample event start end
S1 1 100 350
S1 1 20 480
S2 4 30 60
S3 2 500 700
S4.1 3 300 300
S4.2 12 200 200
Вот что я пытаюсь, вместо этого выдает S4.2
и S4.2
:
df %>%
group_by(sample) %>%
dplyr::mutate(event_count = n_distinct(event)) %>%
dplyr::mutate(sample_mod = as.character(ifelse(event_count == 1, as.character(sample), paste(sample, event_count, sep = '.'))))
sample event start end event_count sample_mod
1 S1 1 100 350 1 S1
2 S1 1 20 480 1 S1
3 S2 4 30 60 1 S2
4 S3 2 500 700 1 S3
5 S4 3 300 300 2 S4.2
6 S4 12 200 200 2 S4.2
Как я могу изменить этоmid-pipe для достижения желаемого результата?