R导入csv文件时丢失级别

R导入csv文件时丢失级别,r,dataframe,csv,R,Dataframe,Csv,我有一个数据帧,有3686行和34列。当我用write.csv2(data,file=folder/data.csv2)保存这个data.frame,然后用read.csv2(folder/data.csv2)再次将它加载到R中时,它的行数也相同(3686);但是,当我询问具有唯一性(data$species)的物种数量(因子)时,环境中的数据表有708个级别,而我导入的数据表仅显示554个级别 str(imported_dataframe$Species) 输出:系数w/554级 str(D

我有一个数据帧,有3686行和34列。当我用
write.csv2(data,file=folder/data.csv2)
保存这个data.frame,然后用
read.csv2(folder/data.csv2)
再次将它加载到R中时,它的行数也相同(3686);但是,当我询问具有
唯一性(data$species)
的物种数量(因子)时,环境中的数据表有708个级别,而我导入的数据表仅显示554个级别

str(imported_dataframe$Species)
输出:系数w/554级

str(Data_in_Environment$Species)
输出:系数w/708级


有人能帮我吗?

写入CSV时,“级别”属性丢失。您可以单独导出级别并在data.frame中设置它们

# Species is a factor with three levels
all_levels <- levels(iris$Species)
all_levels
# [1] "setosa"     "versicolor" "virginica" 

# export table where not all levels are present
write.csv2(head(iris), file = "iris_tmp.csv", row.names = FALSE)

# also export complete list of levels
cat(all_levels, file = "iris_levels_tmp.txt")

# import both levels and data
all_levs <- scan("iris_levels_tmp.txt", what = "")
iris6 <- read.csv2("iris_tmp.csv")

# unrepresented levels have been lost
levels(iris6$Species)
# [1] "setosa"

# define Species as factor with all levels
iris6$Species <- factor(iris6$Species, levels = all_levs)

关于改进问题的建议-可能首先说你有一个708级的数据帧环境,等等。然后说你如何将它保存到另一个文件中,当你导入该文件时,你已经丢失了数据-至少我认为这是在阅读你的文章几次后发生的,因为这对我来说似乎很难跟随。是的,你是对的!谢谢你的建议!谢谢你的详细回答。它与脚本不起作用,但saveRDS起作用了!我非常感谢你的回答!
iris5 <- head(iris, n = 5)
save("iris5", file = "iris5.rda")
# load back iris5
load(file = "iris5.rda")
levels(iris5$Species)
# [1] "setosa"     "versicolor" "virginica"