Как читать числа с запятой в виде десятичного разделителя?

У меня есть серия CSV-файлов, где цифры отформатированы в европейском стиле, используя запятые вместо десятичных точек, т.е. 0,5 вместо 0.5 .

Слишком много этих файлов для их редактирования перед импортом в R. Я надеялся, что есть простой параметр для функции read.csv() или метод для применения к извлеченному набору данных, чтобы R обрабатывал данные как число, а не строку.

Когда вы проверите ?read.table вы, вероятно, найдете все ответы, которые вам нужны.

Есть две проблемы с (континентальными) европейскими csv-файлами:

  1. Что означает c в csv? Для стандартного csv это,, для европейского csv это a ;
    sep – соответствующий аргумент в read.table
  2. Каков характер десятичной точки? Для стандартного csv это a . , для европейских csv это ,
    dec – соответствующий аргумент в read.table

Чтобы прочитать стандартное csv, используйте read.csv , чтобы читать европейские csv use read.csv2 . Эти две функции – это просто оболочки для read.table которые задают соответствующие аргументы.

Если ваш файл не соответствует ни одному из этих стандартов, установите аргументы вручную.

От ?read.table :

 dec the character used in the file for decimal points. 

И да, вы можете использовать это для read.csv . (мне: не глупо, ты не можешь!)

Кроме того, вы также можете использовать

 read.csv2 

который предполагает «,» десятичный разделитель и «;» для разделителей столбцов.

 read.csv(... , sep=";") 

Предположим, что это импортированное поле называется «сумма», вы можете исправить тип таким образом, если ваши номера читаются как символ:

 d$amount <- sub(",",".",d$amount) d$amount <- as.numeric(d$amount) 

У меня это случается со мной часто вместе с кучей других небольших неприятностей при импорте из excel или excel csv. Похоже, что нет единого способа обеспечить получение того, что вы ожидаете при импорте в R, постходовые исправления, по-видимому, являются лучшим методом. Под этим я подразумеваю, ПОСМОТРЕТЬ что вы импортировали - убедитесь, что это то, что вы ожидали, и исправить, если это не так.

может быть

 as.is=T 

это также предотвращает преобразование столбцов символов в факторы

могут использоваться следующим образом:

mydata <- read.table (fileIn, dec = ",")

входной файл (fileIn):

D: \ TEST> больше input2.txt

06-05-2014 09:19:38 3,182534 0

06-05-2014 09:19:51 4,2311 0

Проблемы также могут быть решены, если вы укажете, как представлены ваши недостающие значения (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) 

не забывайте, что вам может понадобиться sub("[.]", "", d$amount, perl=T) чтобы обойти . персонаж.

  • Как отобразить вывод данных float с 2 десятичными знаками в Java?
  • std :: string форматирование, подобное sprintf
  • Удаление повторяющихся элементов с помощью XSLT
  • форматируйте число с запятыми и десятичными знаками в C # (asp.net MVC3)
  • Как преобразовать размер байта в читаемый человеком формат в java?
  • Как избежать фигурных скобок (фигурные скобки) в строке формата в .NET.
  • Преобразование строки в NSDate
  • Вставить текст в textarea с помощью jQuery
  • Новая линия в JLabel
  • Форматирование StAX XML в Java
  • Изменение шрифта для richtextbox без потери форматирования
  • Interesting Posts

    Переход с RAID на AHCI и Windows 7 не будет загружаться

    css width: calc (100% -100px); альтернатива с использованием jquery

    Код ошибки: «Microsoft Security Client» появляется при входе в мои окна 10

    Есть ли способ изменить расстояние между элементами легенды в ggplot2?

    Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?

    Дифференцируйте процессор CUDA (NVIDIA) и Stream (ATI / AMD)

    Отключить проверку скорости мыши между мониторами в обновлении Windows 8.1 1

    Я получаю «Пожалуйста, вставьте диск в Removable Disk», когда я вставляю свой USB-диск

    Ubuntu: предпринимайте действия, когда температура системы становится слишком высокой

    Каков наилучший способ восстановить некоторые фотографии в Linux? Есть ли способ использовать прежде всего для восстановления файлов, содержащих только текст?

    Mac OS X 10.6: клавиша для переключения между выбранной кнопкой в ​​диалоговом окне

    Использование System.ComponentModel.DataAnnotations с Entity Framework 4.0

    Изменение размера UIImage до 200x200pt / px

    В чем разница между дальними указателями и ближайшими указателями?

    Что такое «= C2 = A0» в MIME-кодированном, цитируемом тексте?

    Давайте будем гением компьютера.