2017-06-15 80 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