2016-01-01 4 views
-1

У меня есть набор данных, хранящийся в txt-файле. Переменная x и y имеют разную длину. Поэтому мне не удалось прочитать их в R. Вот как мои данные выглядят какКак читать данные, где переменные с разной длиной в R?

x  y z 
1  2 3.2 
1.5 1.6 2.5 
3 0.8 3.1 
2.5  2.4 
2.6  2.2 

Я пробовал это, но не работал, как мне хотелось. Любая идея почему?

data <- read.table(data.txt,header=T,fill=T) 

Вот как это выглядит

x  y z 
1  2 3.2 
1.5 1.6 2.5 
3 0.8 3.1 
2.5 2.4 
2.6 2.2 
+0

Попробуйте с 'na.strings = ''' – akrun

ответ

4

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

txt <- "x  y 
1  2 
1.5 1.6 
3 0.8 
2.5 
2.6" 
data <- read.table(text=txt,header=T,fill=T) 
data 
#------ 
    x y 
1 1.0 2.0 
2 1.5 1.6 
3 3.0 0.8 
4 2.5 NA 
5 2.6 NA 

Для редактируемого вопроса:
Если это из файл Excel, то вы должны использовать «\ t» в качестве аргумента sep=. Если это формат с фиксированной шириной, вы должны использовать read.fwf в качестве функции чтения.

+0

Извините за это. Я отредактировал мой вопрос. –

+0

Теперь он работает. Миллион спасибо –

1

Вы можете попробовать пакет readr с функцией read_table

data <- read_table("data.txt") 

> data 
    x y z 
1 1.0 2.0 3.2 
2 1.5 1.6 2.5 
3 3.0 0.8 3.1 
4 2.5 NA 2.4 
5 2.6 NA 2.2 

> dim(data) 
[1] 5 3 
+0

Проблема в том, что числа стоят под неправильными переменными. См. Мой отредактированный пост –

+0

Поскольку вы изменили свои данные в исходном вопросе. Я бы предложил функцию read_table из пакета readr. Я отредактировал свой ответ. – andrnev

+0

Спасибо. Извините за мой первый пост –

1

Вы можете использовать заливку параметра = TRUE, а затем вы можете заменить NA нулевого

a <-read.table(header = TRUE, fill= TRUE, file= "./data/data.txt") 
a[is.na(a)] <- 0 

результата:

x y 
1 1.0 2.0 
2 1.5 1.6 
3 3.0 0.8 
4 2.5 0.0 
5 2.6 0.0 
Смежные вопросы