Категориальные поля преобразуются в непрерывные после экспорта csv с использованием fwrite

#r #csv #fwrite

#r #csv #fwrite

Вопрос:

Я сталкиваюсь с некоторыми проблемами при экспорте фрейма данных в R в csv, поскольку, похоже, он преобразует мои коэффициенты в цифры. Используя summary() перед экспортом, я получаю следующее:

  JobLevel JobSatisfaction
 1:1880   1:1448         
 2:3134   2:1343         
 3:1307   3:1996         
 4: 545   4:2327         
          5: 248               
  

Затем я экспортировал файл в CSV, используя следующую команду:

 fwrite(HR, file = "Cleaned Data.csv")
  

Однако, когда я импортировал csv позже, категориальные столбцы, по-видимому, были преобразованы в непрерывные как таковые:

 HR2 <- fread("Cleaned Data.csv", na.strings = "", stringsAsFactors = TRUE)
  
     JobLevel     JobSatisfaction
 Min.   :1.000   Min.   :1.000
 1st Qu.:1.000   1st Qu.:2.000
 Median :2.000   Median :3.000 
 Mean   :2.177   Mean   :2.731                  
 3rd Qu.:3.000   3rd Qu.:4.000                  
 Max.   :5.000   Max.   :4.000  
  

Я считаю, что пол — это нормально, поскольку это строка, но есть ли у меня способ экспортировать мои факторы с числовыми уровнями, чтобы при последующем импорте csv он все равно оставался фактором.

Заранее большое спасибо!

Ответ №1:

CSV — это общий формат файла, который содержит только значения, разделенные запятыми. Он не содержит никакой информации о классах столбцов — это зависит от функции, которая считывает CSV, чтобы принять решение.

Чтобы сохранить информацию о классе при записи в файл, самый простой способ — использовать R-специфичный формат файла, например RDS (см. ?readRDS И ?saveRDS ). Это отлично работает, если вам нужно только R для чтения файла.

Если вам нужно, чтобы другие программы также могли читать / записывать данные, вам нужно будет отслеживать информацию о классе и, например, использовать colClasses аргумент of fread для указания классов столбцов при чтении в CSV.