2017-06-15 75 views
1

我正在尝试绘制一些测序数据,并且希望仅从缩放比例计算中排除染色体4数据(其中第一列中的行具有'4')。染色体4可能会使正态化平均值/ Sd计算偏斜,所以我想从我的scale()函数中排除它。有没有办法做到这一点?现在,我有:如何从scale()中排除某些行的规范化R中的计算?

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

^但有什么办法,我可以表明该函数在第一列排除与“4”行? 我仍然希望新的数据框具有'4'的缩放行,我只是希望scale()中的计算不使用染色体4数据。任何帮助非常感谢,谢谢!

这里是什么样的数据帧貌似简单的例子:

Chromosome  Location  Replication Timing 
1    3748   -0.0001 
4    1847101  0.000302 <-row I would want to exclude 
20    1234   0.000102 
...   ...   ... 
+0

您也可以尝试'过滤器'作为'preMBT_RT%>%过滤器(染色体!= 4)' – parth

回答

2

我们可以代替“定时”对应“染色体” 4为NA,然后做规模

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

如果我们需要排除scale值,同时保持原有的值“定时”

preMBT_RT %>% 
    mutate(Timing = ifelse(Chromosome =="4", Timing, scale(Timing[Chromosome != "4"]))) 
+0

这将删除'4'行的时间值 - 是否有任何方法可以保留和缩放这些值只是而不是在规模函数中进行的正态化计算(mean&sd)中使用它们? – nm44

+0

非常感谢!这是否也将染色体4数据进行缩放?只是没有包含在计算中? – nm44

+1

@ nm44根据我的例子,它没有使用染色体4 – akrun