2013-05-29 3 views
0

У меня есть набор данных в виде: (это просто пример)Как конвертировать безразмерные данные в табу, помеченные в R?

1324501020 
3241030205 
4332020134 

которой каждая строка представляет ответы обследуемого к набору элементов на тест. Данные хранятся в текстовом файле (например, data.txt), но мне нужно, чтобы преобразовать их в формат матрицы таким образом, что каждое число является место в клетке, как это:

1 3 2 4 5 0 1 0 2 0 
3 2 4 1 0 3 0 2 0 5 
4 3 3 2 0 2 0 1 3 4 

другими словами, конечный набор данных должен быть матрицей чисел, в которых столбцы содержат ответы на каждый элемент, а строки - экзамены. Любая идея?

ответ

5
x <- read.fwf(file = "c:\\whatever\\data.txt", width=c(1,1,1,1,1,1,1,1,1,1)) 

О, и прекрасное путешествие в StackOverflow!

+0

Спасибо за ваш быстрый ответ! Это мой первый опыт работы с StackOverflow! Мне нравится ваше решение в том, что иногда я не знаю количество элементов. Есть ли способ сделать это без использования «ширины»? –

+0

+1 (особенно для этой провидческой последней строки :-). – whuber

+0

@Amin Насколько я знаю, «ширина» - необходимый аргумент. Трудно передавать данные фиксированной ширины без указания программного обеспечения, когда нужно остановиться. Я попытался заменить его на rep (1,10), но он, похоже, не работал. Возможно, вы можете обратиться за помощью к файлу справки «read.fwf». –

1

Если данные находятся в текстовом файле, и файл содержит только данные, как показано на рисунке, то лучшим подходом является, вероятно, подход read.fwf, как описано @Penguin_Knight. Но если в файле есть дополнительные поля данных, которые не соответствуют формату фиксированной ширины, или если данные были скопированы или захвачены другим способом, так что они уже находятся в символьном векторе в R, то вот некоторые другие опции.

Вы все еще можете использовать подход read.fwf с помощью textConnection.

Вы можете использовать функцию strsplit, чтобы разделить строки на отдельные цифры и использовать as.numeric, чтобы преобразовать их в числа.

Вы можете использовать функцию strapply из пакета gsubfn, чтобы соответствовать отдельным цифрам и извлекать их (и снова перейти к as.numeric).

Смежные вопросы