我正在尝试绘制一些测序数据,并希望仅从缩放计算中排除染色体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
... ... ...
答案 0 :(得分:2)
我们可以将'Chromosome'4对应的'Timing'替换为NA,然后进行比例
preMBT_RT %>%
mutate(Timing = scale(Timing *NA^(Chromosome =="4")))
如果我们需要排除scale
中的值,同时保持'Timing'的原始值
preMBT_RT %>%
mutate(Timing = ifelse(Chromosome =="4", Timing, scale(Timing[Chromosome != "4"])))