Подтвердить что ты не робот

Чтение csv с датами и цифрами

У меня проблема при импорте файла csv с R:

Примеры строк для импорта:

2010-07-27;91
2010-07-26;93
2010-07-23;88

Я использую оператор:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE)

когда я пытаюсь объединить эти данные с другими, возникшими в результате статистического анализа с использованием cbind, дата отображается как целое число, потому что она была импортирована как фактор.

Если я попытаюсь показать его как строку с помощью as.character, числовые данные также преобразуются в символы, поэтому они непригодны для статистических процедур.

4b9b3361

Ответ 1

Используйте аргумент colClasses:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE,
     colClasses=c("Date",NA))

NA означает "продолжить по умолчанию"

После импорта вы можете преобразовать factor в Date на

data[[1]] <- as.Date(data[[1]])

Ответ 2

Возможно, вы хотите преобразовать значения символов в значащие значения времени. В этом случае объекты времени POSIXt являются хорошим выбором.

Учитывая ваш файл данных, я бы сделал что-то вроде.

data <- read.table(file="...", sep = ";", as.is = TRUE)
data[,1] <- strptime(data[,1], "%Y-%m-%d")

Посмотрите на strptime в справке для получения более подробной информации.

ПРИМЕЧАНИЕ. Если вы укажете все свойства файла, просто используйте read.table. Единственной целью для всех других версий read.xxx является упрощение выражения, поскольку установлены значения по умолчанию. Здесь вы использовали read.csv2, потому что по умолчанию используется sep = ';'. Поэтому не указывайте его снова. Не нужно указывать, что это вся причина, по которой команда существует. Лично я использую только read.table, потому что я никогда не могу вспомнить имена/значения по умолчанию для всех вариантов. В вашем случае это также самый короткий вызов, потому что он удовлетворяет вашему заголовку и dec умолчанию.

Ответ 3

Добавьте as.is=TRUE в вызов read.csv.