Yanıtlar:
Uyarı mesajı, "Tip" değişkeninizin bir faktör haline getirilmesi ve "öğle yemeği" nin tanımlanmış bir seviye olmamasıdır. stringsAsFactors = FALSE
Veri çerçevenizi oluştururken "Tür" ü bir karakter olmaya zorlamak için bayrağı kullanın .
> fixed <- data.frame("Type" = character(3), "Amount" = numeric(3))
> str(fixed)
'data.frame': 3 obs. of 2 variables:
$ Type : Factor w/ 1 level "": NA 1 1
$ 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"
data.frame()
işlevdeki varsayılan ayardır (ve varsayılandır, çünkü çoğu kullanıcının çoğu zaman istediği şey budur).
Doğrudan CSV dosyasından okuyorsanız, bunu yapın.
myDataFrame <- read.csv("path/to/file.csv", header = TRUE, stringsAsFactors = FALSE)
stringsAsFactors
- strings
çoğul olması gerekiyor (@Coliban)
İşte esnek bir yaklaşım , her durumda kullanılabilir, özellikle:
dataframe
(örneğin, daha önceki işlemler uygulanarak elde edilmiştir hemen bir dosya açma değil , ya da yeni bir veri çerçevesi oluşturarak).İlk olarak, un-çarpanlara kullanarak bir dize as.character
, o zaman, fonksiyon ve yeniden çarpanlarına sahip as.factor
(veya basitçe factor
) işlevi:
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)
Bunu düzeltmenin en kolay yolu, sütununuza yeni bir faktör eklemektir. Kaç faktörünüz olduğunu belirlemek için düzeyler işlevini kullanın ve ardından yeni bir faktör ekleyin.
> levels(data$Fireplace.Qu)
[1] "Ex" "Fa" "Gd" "Po" "TA"
> levels(data$Fireplace.Qu) = c("Ex", "Fa", "Gd", "Po", "TA", "None")
[1] "Ex" "Fa" "Gd" "Po" " TA" "None"
.Xlsx dosyasından alınan verilere benzer bir sorun yaşıyorum. Maalesef burada doğru cevabı bulamadım. Başkalarına yardımcı olabilecek aşağıdaki gibi dplyr ile kendi başıma hallettim:
#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"
Ancak, ben buna dayanamadım readxl
paketine benzer bir parametre yoktur stringsAsFactors
. Bu nedenle xlsx
pakete taşındım .