Как исключить определенные строки из 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"])))
Другие вопросы по тегам