2016-02-04 4 views
0

Я пытаюсь импортировать данные, выглядит примерно такИмпорт нескольких линий одного и того же наблюдения в R

ID,time1,time2,time3,time4,time5,time6,time7,time8,time9,time10, 
123456, 
0.123425,0.543565,0.43543,0.34567,0.76543,12345,43567,43567,324567,324567, 
87654, 
0.14567,0.543123,0.435987,0.5675,0.58843,.5543,.567,.3567,.24567,.533367, 
32156, 

Я пытался импортировать его, как это:

tmp <- read.csv(file, header = TRUE, sep = ",") 

Я пробовал read.table. Однако, как только я попытаюсь импортировать его, ID получает его собственное наблюдение со всеми другими переменными, отмеченными как отсутствующие. Следующая строка данных ударяет time1 в ID, time2 в time1 и т. Д.

Он выходит глядя, как:

ID  time1  time2 time3 ..... 
123456 
0.123435 0.543565 0.43543 0.34567 
87654 
0.14567 0.543123 0.435987 0.5675 

Я хочу, чтобы мой выход выглядеть следующим образом:

ID  time1 time2 time3 ...... 
123456 0.123425 0.543565 0.43543 
87654 0.14567 0.543123 0.435987 
32156 
+2

* один раз я пытаюсь импортировать его * .. Как вы импортировать его? –

+0

tmp <- read.csv (file, header = TRUE, sep = ",") Я тоже попробовал read.table. – Such

+1

Nice, теперь добавьте их в вопрос. –

ответ

2

Вы можете сделать обходной путь в R, при условии, что все данные структурированы аналогичным образом. В этом примере я предположил, что в импортированном наборе данных существует четное количество строк (я удалил пятую строку для тестирования).

#remove empty column 
dat <- dat[,1:11] 

#create vector of identifiers to split by, each id repeated twice 
ID2 <- rep(1:(nrow(dat)/2), each=2) 

Затем мы разбиваем данные по нашему идентификатору и извлекаем нужные нам данные. Это первое значение из первой строки, а также все значения из второй строки (строка окончательного пустого). Затем мы даем вектору имена столбцов исходных данных и возвращаем их.

res <- lapply(split(dat,ID2), function(x){ 
    res <- c(x[1,1],x[2,-ncol(x)]) #remove final empty column 
    names(res) <- colnames(dat) 
    res 
}) 

Наконец, мы связываем вместе

output <- do.call(rbind,res) 

> output 
    ID  time1 time2 time3 time4 time5 time6 time7 time8 time9 time10 
1 123456 0.123425 0.543565 0.43543 0.34567 0.76543 12345 43567 43567 324567 324567 
2 87654 0.14567 0.543123 0.435987 0.5675 0.58843 0.5543 0.567 0.3567 0.24567 0.533367 
Смежные вопросы