2016-04-22 125 views
0

我有一個數據集,DF,看起來像這樣,但有幾百萬的實例:R中刪除重複和和值

Date AD Runway MTOW nr.flights 2008-01-01 A 18 376 2 2008-01-01 A 18 376 2 2008-01-01 D 36 190 1 2008-01-02 D 09 150 2 2008-01-02 A 36 280 1 2008-01-02 A 36 280 1

而且我希望它看起來像這樣:

Date AD Runway MTOW nr.flights 2008-01-01 A 18 752 4 2008-01-01 D 36 190 2 2008-01-02 D 9 150 2 2008-01-02 A 36 560 1

基本上我想把所有的Date,AD和Runway行都組合在一起,所以所有的重複項都被刪除。同時,我希望MTOW和nr.flights可以在特定的日期,AD和跑道中加以總結。

我已經試過這樣: vals <- expand.grid(Date = unique(df$Date), Runway = unique(df$Runway), AD = unique(df$AD))

所以,我可以用原始數據集,DF合併這一點,但沒有奏效。我也嘗試了group_by的一些組合,但是這也沒有給我想要的結果。

重現:

df <- data.frame(Date=c("2008-01-01","2008-01-01","2008-01-01","2008-01-02","2008-01-02","2008-01-02"), 
       AD = c("A", "A", "D", "D", "A", "A"), Runway = c(18, 18, 36, 09, 36,36), 
       MTOW = c(376, 376, 190, 150, 280, 280), nr.flights = c(2,2,1,2,1,1)) 

任何幫助,將不勝感激!

回答

0

下面是一個使用包plyr

library(plyr) 
ddply(df,~Date + AD + Runway,summarise,MTOW=sum(MTOW),nr.flights=sum(nr.flights)) 
+0

這個解決方案完美的工作!非常感謝您的幫助! – Veraaa

1

隨着庫dplyr,你可以做這樣的事情:

df %>% group_by(Date, AD, Runway) %>% summarise(MTOW = sum(MTOW), nr.flights = sum(nr.flights)) 
Source: local data frame [4 x 5] 
Groups: Date, AD [?] 

     Date  AD Runway MTOW nr.flights 
     (fctr) (fctr) (dbl) (dbl)  (dbl) 
1 2008-01-01  A  18 752   4 
2 2008-01-01  D  36 190   1 
3 2008-01-02  A  36 560   2 
4 2008-01-02  D  9 150   2 

有很多這樣的帖子和例子已經我想。

+0

感謝您的回答!這個解決方案適用於我的示例數據集,但不知何故,它不適用於我的原始數據集。我不知道爲什麼。但是我現在有解決方案,所以非常感謝! – Veraaa

+0

感謝stackoverflow的最佳方式是投票或接受答案。 :) – Gopala