2017-07-24 2 views
0

Ich habe einen Datenrahmen, der durch Anhängen ähnlicher Datenrahmen erstellt wurde. Beispieldatei https://drive.google.com/open?id=0BwswfhTezOETWmpPakpGOUl0V0ELöschen Sie Zeilen mit bestimmten Werten, indem Sie die erste und letzte Zeile des Datenrahmens beibehalten.

Lat Lon Species BottomDepth RunStatus 
6023.9796 518.5393  NA TowStarted 
6023.9796 518.5393  Cucumber 25  
6023.9796 518.5393  Cucumber 25  
6023.9796 518.5392  Chank 25  
6023.9797 518.5392  NA TowStarted 
6023.9797 518.5392  NA TowStopped 
6023.9797 518.5392  Cucumber 29  
6023.9797 518.5392  Chank 29  
6023.9797 518.5392  Chank 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  NA TowStarted 
6023.9797 518.5391  NA TowStopped 
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Cucumber 29  
6023.9797 518.5391  NA TowStarted 
6023.9797 518.5391  NA TowStopped 
6023.9797 518.5391  Cucumber 29  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Chank 35  
6023.9797 518.5391  NA TowStopped 

ich zum ersten und letzten Reihen zu halten brauchen. aber müssen Zeilen mit RunStatus == "TowStarted" und RunStatus == "TowStopped" löschen.

mf<- read.csv("C:/Video_sledge/Output/merge.csv") 
mf1 <-mf[ !grepl("TowStarted", mf$RunStatus) , ] 
mf2 <-mf1[ !grepl("TowStopped", mf1$RunStatus) , ] 

aber dieser Code löscht die erste und letzte Zeile.

Wie lösche mittlere Zeilen mit Testbedingung (RunStatus == "TowStarted" und RunStatus == "TowStopped") während die ersten und letzten Zeilen beibehalten werden?

erwartete Ausgabe als

Lat Lon Species BottomDepth RunStatus 
6023.9796 518.5393  NA TowStarted 
6023.9796 518.5393  Cucumber 25  
6023.9796 518.5393  Cucumber 25  
6023.9796 518.5392  Chank 25  
6023.9797 518.5392  Cucumber 29  
6023.9797 518.5392  Chank 29  
6023.9797 518.5392  Chank 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Sea Urchine 29  
6023.9797 518.5391  Cucumber 29  
6023.9797 518.5391  Cucumber 29  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Cucumber 35  
6023.9797 518.5391  Chank 35  
6023.9797 518.5391  NA TowStopped 
+1

Bitte fügen Sie ein reproduzierbares Beispiel und erwarteten Ausgabe – Sotos

+0

Ich habe Probensatz hinzugefügt und – sudheera

Antwort

2
mf[c(1,which(!(mf$RunStatus %in% c(" TowStarted "," TowStopped "))),nrow(mf)),] 
+0

Warnmeldung gefunden: In c (1, nrow (mf)) | ! (mf $ RunStatus% in% c ("TowStarted", "TowStopped")): längere Objektlänge ist kein Vielfaches kürzer Objektlänge – sudheera

+0

Hi, testen Sie den Code jetzt, sollte funktionieren! –

1

folgt könnten Sie verwenden das dplyr Paket

library(dplyr) 
library(magrittr) 

df %>% 
    filter(!(RunStatus %in% c("TowStarted", "TowStopped")) | row_number() %in% c(1, nrow(df))) 

Getestet habe ich es auf anderen Daten und es funktionierte.

+0

Fehler erwartete Ausgabe in Übereinstimmung (x, Tisch, nomatch = 0L): Objekt ‚RunStatus‘ nicht – sudheera

0
mf<- read.csv("C:/Video_sledge/Output/merge.csv") 
frow <- mf[1,] 
mf1 <-mf[ !grepl("TowStarted", mf$RunStatus) , ] 
mf2 <-mf1[ !grepl("TowStopped", mf1$RunStatus) , ] 
lrow <- mf[nrow(mf),] 
f <-rbind(frow,mf2,lrow) 

dieser Code gibt über Ausgabe mich. aber ich denke, jemand hat eine bessere Lösung.

Verwandte Themen