R: Импортировать CSV с именами столбцов, которые содержат пробелы

r csv

32242 просмотра

3 ответа

CSV-файл выглядит так (изменено для краткости). Несколько столбцов имеют пробелы в заголовке, и R не может их различить.

Псевдоним; Тип; SerialNo; DateTime; Основной статус; [...]
E1; E-70; 781733; 01.04.2010 11: 28; 8; [...]

Вот код, который я пытаюсь выполнить:

s_data <- read.csv2( file=f_name )
attach(s_data)

s_df = data.frame( 
                scada_id=ID,
                plant=PlantNo, 
                date=DateTime,
                main_code=Main status,
                seco_code=Additional Status,
                main_text=MainStatustext,
                seco_test=AddStatustext,
                duration=Duration)

detach(s_data)

Я также попытался заменить

main_code=Main\ status

а также

main_code="Main status"
Автор: klonq Источник Размещён: 06.07.2019 12:28

Ответы (3)


24 плюса

Решение

Если вы не укажете check.names=FALSE, R преобразует имена столбцов, которые не являются допустимыми именами переменных (например, содержат пробелы или специальные символы или начинаются с цифр), в допустимые имена переменных, например, заменяя пробелы точками. Попробуй names(s_data). Если же использовать check.names=TRUE, а затем использовать одиночные обратные кавычки ( `) , чтобы окружить имена.

Я также рекомендовал бы использовать renameиз reshapeпакета.

s_data <- read.csv2( file=f_name )
library(reshape)
s_df <- rename(s_data,ID="scada_id",
               PlantNo="plant",DateTime="date",Main.status="main_code",
               Additional.status="seco_code",MainStatustext="main_text",
               AddStatustext="seco_test",Duration="duration")

Для чего это стоит, у инструментов Tidyverse (то есть readr::read_csv) есть обратное значение по умолчанию; они не преобразуют имена столбцов, чтобы сделать их допустимыми символами R, если вы явно не запросите их.

Автор: Ben Bolker Размещён: 25.05.2011 12:44

5 плюса

Я считаю, что пробелы заменяются точками "." при импорте файлов CSV. Так что вы напишите, например Main.status. Вы можете проверить, введя, names(s_data)чтобы увидеть, какие имена.

Автор: Daniel Dickison Размещён: 25.05.2011 12:37

5 плюса

s_data <- read.csv( file=f_name , check.names=FALSE)
Автор: Mark Размещён: 12.02.2015 06:50
Вопросы из категории :
32x32