2016-08-25 4 views
0

Verwenden von R Ich möchte eine neue Spalte erstellen, die Daten basierend auf der Häufigkeit einer Variablen kennzeichnet. Derzeit habe ich Code, der diese Punkte entfernt, anstatt eine Flag-Spalte hinzuzufügen. Ich muss Daten kennzeichnen, die weniger als 7200 Datensätze, die auch als y oder n durch eine andere Spalte dentoed sind.R Neue Spalte mit Flag erstellen

Mein aktueller Code, der diese reocords als solche entfernt:

# Read in csv file 
data = read.csv(infile) 

# Create subset with only records marked 'y' 
data_y = subset(data,data$yn!= 'n') 

# Count the number of records per day, using table function 
valid = table(data_y$DATE) 

# Remove the records with less than 7200 records, and also marked 'y' from subset function 
df_cut = data_w[data_w$DATE_STAMP %in% names(valid)[valid>=7200],] 

# Save new cvs 
write.csv(df_cut,outpath) 

Ich gehe davon will ich nicht Teilmenge verwendet werden soll, da dies R die Datensätze zu ignorieren sagt aber nicht sicher, wo ich anfangen soll.

+3

Als Randbemerkung, das Hauptmerkmal von 'subset' ist nicht, Spalten mit' parent_object $ 'zu qualifizieren; beispielsweise subset (Daten, yn! = 'n'). – nrussell

+0

So etwas wie 'data $ flag = ave (Daten [, 1], Daten $ DATE, Daten $ yn, FUN = Funktion (x) Länge (x) <7200)'. Dadurch wird eine Spalte namens "Flag" hinzugefügt, die TRUE ist, wenn für jede DATE/YN-Kombination weniger als 7200 Zeilen vorhanden sind. – Gregor

Antwort

0

Nicht sicher genau das, was Sie für Fragen, aber ...

tmp <- data.frame(table(data$DATE)) 
tmp <- tmp[tmp$Freq < 7200,] 

data$flagColumn <- "n" 

for(i in 1:nrow(tmp)){ 
    data$flagColumn[data$DATE == tmp$Freq[i]] <- "y" 
} 

Wenn Sie mehrere Bedingungen hinzufügen müssen Sie sie hinzufügen, mit ‚&‘

data$flagColumn[(data$DATE == tmp$Freq[i]]) & data$someOtherCol =="n"] <- "y" 
Verwandte Themen