2017-10-07 111 views
0

我需要清理數據幀:應用函數來代替缺失值

所有等位基因列
Sample Name` Marker `Allele 1` `Allele 2` `Allele 3` `Allele 4` 
      <int> <chr>  <int>  <int>  <int>  <int> 
1    2 D13   NA  118  136   NA 
2    3 D13   NA  118   NA  136 
3    4 D13  118   NA   NA  136 
4    5 D13   NA   NA   NA   NA 
5    6 D13   NA   NA   NA   NA 

值應該被推到了左:

Sample Name` Marker `Allele 1` `Allele 2` `Allele 3` `Allele 4` 
      <int> <chr>  <int>  <int>  <int>  <int> 
1    2 D13  118  136   NA   NA 
2    3 D13  118  136   NA   NA 
3    4 D13  118  136   NA   NA 
4    5 D13   NA   NA   NA   NA 
5    6 D13   NA   NA   NA   NA 

我與嘗試這個功能,但我不知道該如何重視新載體回DF:

apply(dff[3:6], 1, function(x) 
    x <-x[!is.na(x)] 
) 

數據:

structure(list(`Sample Name` = 2:6, Marker = c("D13", "D13", 
"D13", "D13", "D13"), `Allele 1` = c(NA, NA, 118L, NA, NA), `Allele 2` = c(118L, 
118L, NA, NA, NA), `Allele 3` = c(136L, NA, NA, NA, NA), `Allele 4` = c(NA, 
136L, 136L, NA, NA)), .Names = c("Sample Name", "Marker", "Allele 1", 
"Allele 2", "Allele 3", "Allele 4"), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame")) 
+0

能否請添加您想要的結果爲樣本數據的級聯? – Elin

回答

1

我們需要的是無NA元素和NA元素

df[3:6] <- t(apply(df[3:6], 1, function(x) c(x[!is.na(x)], x[is.na(x)])))