2016-04-22 4 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)) 

すべてのヘルプははるかに高く評価されるだろう!ライブラリdplyr

答えて

0

は、パッケージplyr使用するものである:

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

このソリューションは完璧に動作します!ご助力ありがとうございます! – Veraaa

1

は、あなたがこのような何かを行うことができます。

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

関連する問題