#r
Вопрос:
Возникли проблемы с чтением в мини-файле textConnection (), в котором есть факторы. Этот фрагмент ниже содержит два отдельных фактора для «LabAuto».
x lt;- read.table(tc lt;- textConnection( "Project, TestingType, CodeType 'TS', 'TDDEUT', Production 'TS', 'TDDEUT', Testing 'NR', 'LabAuto', Production 'In', 'LabAuto', Testing"), header=TRUE, colClasses=c("character", "factor", "factor"), sep=",", na.strings=c("NULL"), quote="'")
TestingType показывает это, указывая, что есть два уровня, помеченных (приблизительно) ЛабАвто:
gt; x$TestingType [1] TDDEUT TDDEUT LabAuto LabAuto Levels: LabAuto LabAuto TDDEUT
Якобы это связано с дополнительным пробелом перед первым фактором «LabAuto», потому что, если я удалю один пробел (в строке «NR»), то я просто получу два фактора для TestingType, как я хочу:
gt; x$TestingType [1] TDDEUT TDDEUT LabAuto LabAuto Levels: LabAuto TDDEUT
Но не должно ли указание параметров sep=»,» и quote=»‘» указывать R рассматривать только текст внутри одинарных кавычек в качестве метки фактора?
Одинарные кавычки не являются исключительно проблемой, так как в третьей колонке выше та же проблема:
gt; x$CodeType [1] Production Testing Production Testing Levels: Production Testing Testing Production
Он показывает 4 разных фактора вместо 2, опять же якобы потому, что перед каждым из них разное количество пробелов. Есть ли способ указать R игнорировать пробелы при создании уровней коэффициентов из текстового входного файла? Спасибо.
Комментарии:
1. От
?read.table
вас можно якобы установитьstrip.white = TRUE
.
Ответ №1:
Ваш входной файл имеет очень странный формат. Обычно у вас есть разделитель или пробелы, разделяющие значения. У вас, кажется, есть и то, и другое, что странно. Но вы можете убрать пробел, если используете strip.white=
параметр to read.table
. Use
x lt;- read.table(tc lt;- textConnection( "Project, TestingType, CodeType 'TS', 'TDDEUT', Production 'TS', 'TDDEUT', Testing 'NR', 'LabAuto', Production 'In', 'LabAuto', Testing"), header=TRUE, colClasses=c("character", "factor", "factor"), sep=",", na.strings=c("NULL"), quote="'", strip.white = TRUE) x$TestingType # [1] TDDEUT TDDEUT LabAuto LabAuto # Levels: LabAuto TDDEUT
Комментарии:
1. полоска.белый был ответом. Спасибо! Данные отформатированы таким образом, потому что я иногда редактирую их вручную. Помогает выстроить столбцы в ряд. Строки или факторы могут содержать встроенные пробелы.