我被困在一個可能很簡單的問題 - 如何總結連續的重複行並刪除除第一行以外的所有行。而且,如果在兩個副本(例如2,na,2
)之間存在NA
,也可以將它們相加併除去第一個條目。 到目前爲止好,這裏是我的樣本數據R總結連續的重複行並刪除除第一行以外的所有行
ia<-c(1,1,2,NA,2,1,1,1,1,2,1,2)
time<-c(4.5,2.4,3.6,1.5,1.2,4.9,6.4,4.4, 4.7, 7.3,2.3, 4.3)
a<-as.data.frame(cbind(ia, time))
樣本輸出
a
ia time
1 1 4.5
2 1 2.4
3 2 3.6
4 NA 1.5
5 2 1.2
6 1 4.9
7 1 6.4
8 1 4.4
9 1 4.7
10 2 7.3
11 1 2.3
12 2 4.3
現在我想 1)概括連續IA的的「時間」列 - 即,和時間如果數字1出現兩次或更多次,則在本例中,第一行和第二列的時間總和爲4.5+2.4
。
2.)如果在兩個數字(ia列)之間有一個NA
,它們是相同的(i.e., ia = 2, NA, 2)
,那麼也將所有這些時間相加。
3.)只保留ia
的第一次出現,然後刪除其餘部分。
最後,我想有這樣的事情:
a
ia time
1 1 6.9
3 2 6.3
6 1 20.4
10 2 7.3
11 1 2.3
12 2 4.3
我發現這對於總結,但它並沒有考慮到連續的因素
aggregate(time~ia,data=a,FUN=sum)
,我發現這用於刪除
a[cumsum(rle(as.numeric(a[,1]))$lengths),]
儘管rle方法保持最後一項,我會w螞蟻保持第一。我也不知道如何處理NAs
。
如果我有一個1-NA-2
的模式,那麼NA
不應該與他們中的任何一個進行計數,在這種情況下,應該刪除NA
行。
如果你有'1-NA-2'的模式怎麼辦? NA應該計爲1,2還是兩者都不?另外,連續有多少個NA? –
如果我有1-NA-2的模式,那麼NA不應該與他們中的任何一個計數,在這種情況下NA應該被移除。是的,連續可能會有一個以上的NA。 – LaNeu
澄清:當我說連續超過一個NA時,我的意思是連續超過一個NA。例如,是否有可能按順序存在「1 NA NA 1」?在那種情況下,新生兒是否應計爲1? –