2017-11-06 6 views
-3

Ich versuche, zwei Spalten ("Nitrate" und "Sulfat") aus vielen Dateien, die typische Anzahl von Zeilen und Spalten haben. Hier ist mein Code ..Datenrahmen Fehler in R

pollutant <- if(pollutant == TRUE){ 
     id[,"nitrate"] 
     } else { 
      id[,"sulfate"] 
      } 

Ich sollte diese Spalten verwenden, um die Bedeutung dieser Spalten zu zählen. bitte geben Sie mir eine Hand, ich bin ein Neuling zu R

+3

Frage ist nicht klar, was ist die Eingabe und erwartete Ausgabe? – zx8754

+0

die Argumente sind (Daten, Schadstoff, ID) –

+0

Wie sehen Ihre Daten aus? – patL

Antwort

0

Die Funktion if akzeptieren nur einzelne Werte jedes Mal. Wenn pollutant eine data.frame Struktur oder ähnlich ist, wird die if Schleife fehlschlagen. Mein Vorschlag ist, versuchen Sie die data.table Umgebung zu verwenden. Es macht das Leben viel einfacher für das, was es zu tun scheint (ich verstehe es nicht vollständig aus Ihrem Text).

library(data.table) 

    pollutant <- data.table(pollutant) 
    Pollutat.Subset <- pollutant[id == "nitrate" | id =="sulfate",] 

Dies sollte Ihre Daten basierend auf der Identität der ID subset.

+0

Hier ist mein ganzer Code .. pollutantmean <- function (Specdata, Schadstoff, ID) { specdata <- setwd ("C:/Benutzer/lenovo/Desktop/Kurs/specdata") id <- list.files (pattern = "* .csv") für (i in seq_along (id)) { assign (id [i], read.csv (id [i])) } schadstoff <- id [c ("nitrat", "sulfat")] mean (complete.cases (Schadstoff), na.rm = TRUE) } und ich möchte den Mittelwert der "Nitrat" ​​und "Sulfat" in jeder Datei, die ich rufe –

+0

Der Ausgang ist> Fehler in data.frame (..., überprüfen .Name s = FALSE): Argumente implizieren unterschiedliche Anzahl von Zeilen: 332, 1461 und ich weiß nicht, was zu tun ist !! –

+0

Ich kann Ihren Code nicht reproduzieren, weil Sie mir einen Verweis auf eine Datei in Ihrem Laptop senden. Sie müssen einige zufällige Daten erzeugen, die Ihren ähneln, damit ich den Fehler in meinem Computer reproduzieren kann. Außerdem ist von deiner Frage her immer noch nicht ganz klar was du willst. Wenn Sie den Mittelwert nach Gruppe benötigen, verwenden Sie die Pakete 'data.table' oder' dplyr'. Macht das Leben leichter. – Santi