2017-10-07 4 views
0

Ich brauche einen Datenrahmen, um aufzuräumen:gelten Funktion auf Zeilen fehlende Werte ersetzen

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 

ich versuche:

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 

Werte für alle Allele Spalten sollten nach links geschoben werden diese Funktion aber ist nicht sicher, wie neuen Vektor df befestigen zurück:

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

Daten:

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

Können Sie bitte Ihre gewünschten Ergebnisse für die Beispieldaten hinzufügen? – Elin

Antwort

1

Was wir brauchen, ist eine Verkettung von Nicht-NA-Elemente und NA Elemente

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