Как исключить определенные строки из scale(), нормализуя вычисления в R?
Я пытаюсь отобразить некоторые данные последовательности и хочу исключить данные хромосомы 4 (где строки в первом столбце имеют "4") только из вычисления масштабирования. Хромосома 4 может исказить вычисления нормализации среднего / Sd, поэтому я хочу исключить ее из моей функции scale(). Есть ли способ сделать это? Прямо сейчас у меня есть:
preMBT_RT <-preMBT_RT %>% mutate_each_(funs(scale(.) %>% as.vector),vars=c("Timing"))
^ Но есть ли способ указать IN в этой функции, чтобы исключить строки с '4' в первом столбце?? Я все еще хочу, чтобы новый фрейм данных имел масштабированные строки с '4', я просто хочу, чтобы при вычислении в scale() не использовались данные Chromosome 4. Любая помощь высоко ценится - спасибо!
Вот пример того, как выглядит фрейм данных вкратце:
Chromosome Location Replication Timing
1 3748 -0.0001
4 1847101 0.000302 <-row I would want to exclude
20 1234 0.000102
... ... ...
1 ответ
Мы могли бы заменить "Сроки", которые соответствуют "Хромосоме" 4, как NA, а затем сделать шкалу
preMBT_RT %>%
mutate(Timing = scale(Timing *NA^(Chromosome =="4")))
Если нам нужно исключить значения в scale
сохраняя первоначальное значение для "времени"
preMBT_RT %>%
mutate(Timing = ifelse(Chromosome =="4", Timing, scale(Timing[Chromosome != "4"])))