1

我正在尝试绘制一些测序数据,并希望仅从缩放计算中排除染色体 4 数据(其中第一列中的行具有“4”) 。染色体 4 可能会使归一化均值/Sd 计算出现偏差,因此我想将其从我的 scale() 函数中排除。有没有办法做到这一点?现在,我有:

preMBT_RT <-preMBT_RT %>% mutate_each_(funs(scale(.) %>% as.vector),vars=c("Timing"))

^但是有什么方法可以在该函数中指示排除第一列中带有“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
...            ...          ...
4

1 回答 1

2

我们可以将与“染色体”4 对应的“时间”替换为 NA,然后进行缩放

preMBT_RT %>%
       mutate(Timing =  scale(Timing *NA^(Chromosome =="4")))

如果我们需要在scale保留 'Timing' 的原始值的同时排除其中的值

preMBT_RT %>% 
   mutate(Timing =  ifelse(Chromosome =="4", Timing, scale(Timing[Chromosome != "4"])))
于 2017-06-15T05:52:24.017 回答