Чтение 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 , числовые данные также преобразуются в символы, поэтому их нельзя будет использовать для статистические процедуры.

14
задан lmo 4 April 2017 в 12:23
поделиться

3 ответа

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

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

NA означает «действовать по умолчанию»

После импорта вы можете преобразовать фактор в Дата от

data[[1]] <- as.Date(data[[1]])
25
ответ дан 1 December 2019 в 06:53
поделиться

Возможно, вы хотите преобразовать значения символов в осмысленные значения времени. В этом случае объекты времени 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.

9
ответ дан 1 December 2019 в 06:53
поделиться

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

7
ответ дан 1 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: