我一個數據集看起來像這樣,除了有更多的列中包含「串行」和「祿」數據的工作:如何將數據組合爲單行?
start <-c(1,8,16,24,28,32)
end <-c(4,9,20,27,30,45)
serial<-c(1,2,3,4,5,6)
loc<-c(8,63,90,32,89,75)
dataset<-data.frame(cbind(start,end, serial,loc))
這裏的每一行實際上代表了連續的整數的運行;我想將每個連續的整數都放到它自己的行中,並保存該行的其他屬性。 「開始」表示運行的開始,「結束」表示運行的結束。因此,例如,在「數據集」的第一行中,我希望將該行分成四行:一列爲1,一列爲2,一列爲3,另一行爲4。同樣,第二行在「數據集」將被分成兩行:一個用於8,一個用於9等
因此,輸出用於運行剛剛的前兩行‘數據集’將如下所示:
split serial loc
1 1 8
2 1 8
3 1 8
4 1 8
8 2 63
9 2 63
堅持使用適用於'data.frame'不是特別安全,因爲它會強制到相同類型的矩陣。我不明白第二行是如何做OP的。 (或者我誤解) – mnel
@ mnel,第二行有錯誤,現在已修復。感謝您使用'apply'和數據框指出問題。我沒有意識到,雖然它確實有道理。它是否總是強制進入矩陣(即僅僅通過使用apply)或僅當「FUN」需要這種行爲時? –
它將始終強制爲矩陣(或數組,但對於data.frame不可能)。查看源代碼,行是'if(is.object(X)) {X < - if(dl == 2L){as.matrix(X)} else else as.array(X)}}' – mnel