У меня есть серия файлов CSV, в которых числа отформатированы в европейском стиле с использованием запятых вместо десятичных знаков, например 0,5
вместо из 0,5
.
Слишком много этих файлов, чтобы отредактировать их перед импортом в R. Я надеялся, что есть простой параметр для функции read.csv ()
или метод, который можно применить к извлеченному набору данных. для того, чтобы R обрабатывал данные как число, а не строку.
read.csv(... , sep=";")
Предположим, это импортированное поле называется «сумма», вы можете исправить тип таким образом, если ваши числа читаются как символы:
d$amount <- sub(",",".",d$amount)
d$amount <- as.numeric(d$amount)
У меня такое часто случается со мной наряду с кучей других маленьких неприятностей при импорте из Excel или Excel CSV. Кажется, что нет единого способа обеспечить получение того, что вы ожидаете, когда вы импортируете в R, лучше всего использовать исправления пост-hoc. Под этим я подразумеваю ПОСМОТРЕТЬ то, что вы импортировали - убедитесь, что это то, что вы ожидали, и исправьте, если это не так.
Проблемы также могут быть решены, если вы укажете, как представлены ваши пропущенные значения (na.strings = ...). Например, здесь V1 и V2 имеют одинаковый формат (десятичные дроби, разделенные "," в CSV-файле), но поскольку NA присутствуют в V1, это интерпретируется как фактор:
dat <- read.csv2("...csv", header=TRUE)
head(dat)
> ID x time V1 V2
> 1 1 0:01:00 0,237 0.621
> 2 1 0:02:00 0,242 0.675
> 3 1 0:03:00 0,232 0.398
dat <- read.csv2("...csv", header=TRUE, na.strings="---")
head(dat)
> ID x time V1 V2
> 1 1 0:01:00 0.237 0.621
> 2 1 0:02:00 0.242 0.675
> 3 1 0:03:00 0.232 0.398
Просто добавлю к ответу Брэндона выше, который хорошо сработал для меня (у меня недостаточно представителя, чтобы комментировать):
Если вы используете
d$amount <- sub(",",".",d$amount)
d$amount <- as.numeric(d$amount)
don ' не забудьте, что вам может понадобиться sub("[.]", "", d$amount, perl=T)
, чтобы обойти персонажа .
.