Я пытаюсь сделать набор данных о расписании железных дорог пригодным для проекта.Необработанные данные имеют следующую структуру:
#00000001
%100,11410, ,001,002,Nachtnettrein
%100,01412, ,002,007,Nachtnettrein
-00002,000,999
&IC ,001,007
>rtd ,2532
?11 ,11 ,00002
;rtn
;rta
;cps
;nwk
+gd ,2550,2557
?5 ,5b ,00002
;ztmo
;ztm
;ypb
;vb
;gvc
+gv ,2616,2623
?6 ,6 ,00002
;laa
;gvm
;vst
;dvnk
+ledn ,2635,2645
?5b ,5b ,00002
;ssh
;nvp
;hfd
+shl ,2700,2702
?1-2 ,1-2 ,00002
;asdl
;ass
+asd ,2716,2719
?11a ,11a ,00002
;asdm
;asa
;dvd
;asb
;ashd
;ac
;bkl
;mas
;utzl
<ut ,2758
?5 ,5 ,00002
#00000002
%100,11410, ,001,002,Nachtnettrein
Я заинтересован в разделении этих данных на основе номера поездки.Каждый номер поездки начинается с #.Я использую следующий код для разделения по номеру поездки:
DF <- read.delim("timetbls.dat", sep="#", skip=1)
Это дает следующий результат:
> head(DF)
X X00000001
1 %100,11410, ,001,002,Nachtnettrein 1
2 %100,01412, ,002,007,Nachtnettrein NA
3 -00002,000,999 NA
4 &IC ,001,007 NA
5 >rtd ,2532 NA
6 ?11 ,11 ,00002 NA
Где столбец X содержит некоторые данные для этой конкретной поездки и столбец X00000001содержит номер поездки.Номер поездки отображается только для первой строки каждой поездки.Остальные значения равны NA, пока не будет обнаружен другой номер отключения.Теперь я хочу объединить строки, которые содержат одну и ту же поездку.В качестве первого шага я попытался создать цикл for, который заполняет каждый NA соответствующим номером поездки, поэтому, возможно, я смогу сгруппировать этот номер поездки позже.Проблема в том, что этот цикл for кропотливо медленный для набора данных с миллионами строк.
DF$X00000001[1] <- 1 #Initializing first number, which is normally missing out
DF$Trip[1] <-1 #Bruteforcing first trip number
for(i in dim(DF)[1] {
ifelse(DF$X00000001[i] == NA, DF$Trip[i] <- DF$Trip[i-1], DF$Trip[i] <-DF$X00000001[i])
}
Я ищу замену цикла for или любого другого метода для сбора данных, принадлежащих одной поездке водин ряд.Спасибо!