Die Warnmeldung ist, weil Ihre Variable "Typ" zu einem Faktor gemacht wurde und "Mittagessen" keine definierte Ebene war. Verwenden Sie das stringsAsFactors = FALSEFlag, wenn Sie Ihren Datenrahmen erstellen, um zu erzwingen, dass "Typ" ein Zeichen ist.
> fixed <- data.frame("Type"= character(3),"Amount"= numeric(3))> str(fixed)'data.frame':3 obs. of 2 variables:$ Type : Factor w/1 level "":NA11$ Amount: chr "100""0""0">> fixed <- data.frame("Type"= character(3),"Amount"= numeric(3),stringsAsFactors=FALSE)> fixed[1,]<- c("lunch",100)> str(fixed)'data.frame':3 obs. of 2 variables:$ Type : chr "lunch"""""$ Amount: chr "100""0""0"
Weil dies die Standardeinstellung in der data.frame()Funktion ist (und es ist die Standardeinstellung, weil dies die meisten Benutzer die meiste Zeit wollen).
David
46
Wenn Sie direkt aus der CSV-Datei lesen, gehen Sie folgendermaßen vor.
stringAsFactors gibt einen Fehler aus: unbenutztes Argument (stringAsFactors = FALSE)
Coliban
1
stringsAsFactors- stringsMuss Plural sein (@Coliban)
Campeterson
24
Hier ist ein flexibler Ansatz , der in allen Fällen verwendet werden kann, insbesondere:
beeinflussen nur eine Spalte oder
das dataframewurde von der Anwendung vorherigen Operationen erhalten (zB nicht sofort das Öffnen einer Datei oder ein neues Datenrahmen erstellen).
Zuerst un-Faktorisierung einen String mit der as.characterFunktion, und dann wieder factorize mit der as.factor(oder einfach factor) Funktion:
fixed <- data.frame("Type"= character(3),"Amount"= numeric(3))# Un-factorize (as.numeric can be use for numeric values)# (as.vector can be use for objects - not tested)
fixed$Type <- as.character(fixed$Type)
fixed[1,]<- c("lunch",100)# Re-factorize with the as.factor function or simple factor(fixed$Type)
fixed$Type <- as.factor(fixed$Type)
Der einfachste Weg, dies zu beheben, besteht darin, Ihrer Spalte einen neuen Faktor hinzuzufügen. Verwenden Sie die Ebenenfunktion, um zu bestimmen, wie viele Faktoren Sie haben, und fügen Sie dann einen neuen Faktor hinzu.
Ich habe ein ähnliches Problem, welche Daten aus der XLSX-Datei abgerufen wurden. Leider konnte ich hier nicht die richtige Antwort finden. Ich habe es alleine mit dplyr wie folgt gehandhabt, was anderen helfen könnte:
#install.packages("xlsx")
library(xlsx)
extracted_df <- read.xlsx("test.xlsx", sheetName='Sheet1', stringsAsFactors=FALSE)# Replace all NAs in a data frame with "G" character
extracted_df[is.na(extracted_df)]<-"G"
Ich konnte es jedoch nicht mit dem readxlPaket handhaben, das keinen ähnlichen Parameter wie das hat stringsAsFactors. Aus dem Grund bin ich zum xlsxPaket übergegangen.
data.frame()
Funktion ist (und es ist die Standardeinstellung, weil dies die meisten Benutzer die meiste Zeit wollen).Wenn Sie direkt aus der CSV-Datei lesen, gehen Sie folgendermaßen vor.
quelle
stringsAsFactors
-strings
Muss Plural sein (@Coliban)Hier ist ein flexibler Ansatz , der in allen Fällen verwendet werden kann, insbesondere:
dataframe
wurde von der Anwendung vorherigen Operationen erhalten (zB nicht sofort das Öffnen einer Datei oder ein neues Datenrahmen erstellen).Zuerst un-Faktorisierung einen String mit der
as.character
Funktion, und dann wieder factorize mit deras.factor
(oder einfachfactor
) Funktion:quelle
Der einfachste Weg, dies zu beheben, besteht darin, Ihrer Spalte einen neuen Faktor hinzuzufügen. Verwenden Sie die Ebenenfunktion, um zu bestimmen, wie viele Faktoren Sie haben, und fügen Sie dann einen neuen Faktor hinzu.
quelle
Ich habe ein ähnliches Problem, welche Daten aus der XLSX-Datei abgerufen wurden. Leider konnte ich hier nicht die richtige Antwort finden. Ich habe es alleine mit dplyr wie folgt gehandhabt, was anderen helfen könnte:
Ich konnte es jedoch nicht mit dem
readxl
Paket handhaben, das keinen ähnlichen Parameter wie das hatstringsAsFactors
. Aus dem Grund bin ich zumxlsx
Paket übergegangen.quelle