2017-07-31 12 views
1

私は、調査日の詳細と記録された個体のインスタンスの2つのデータフレームを持っています。次のように:1つのデータフレーム内の値を別のデータフレームに要約する

Records <- data.frame("Location"=c("A","A","B","C","C","C","D"), 
         "Date"= c("09/01/2017","12/01/2017","20/01/2017","06/06/2017","03/06/2017","19/01/2017","02/01/2017"), 
         "Individuals"= c(3,2,6,4,0,1,6)) 
Surveys <- data.frame("Location"=c("A","B","C","D","A","B","C","D"), 
        "Start"= c(rep("01/01/2017",length=4),rep("01/06/2017",length=4)), 
         "End"= c(rep("01/02/2017",length=4),rep("01/07/2017",length=4))) 

> Surveys 
    Location  Start  End 
1  A 01/01/2017 01/02/2017 
2  B 01/01/2017 01/02/2017 
3  C 01/01/2017 01/02/2017 
4  D 01/01/2017 01/02/2017 
5  A 01/06/2017 01/07/2017 
6  B 01/06/2017 01/07/2017 
7  C 01/06/2017 01/07/2017 
8  D 01/06/2017 01/07/2017 
> Records 
    Location  Date Individuals 
1  A 09/01/2017   3 
2  A 12/01/2017   2 
3  B 20/01/2017   6 
4  C 06/06/2017   4 
5  C 03/06/2017   0 
6  C 19/01/2017   1 
7  D 02/01/2017   6 

私は、そのサイトで、該当する期間内に発生した個体数を合計調査データフレームに列を追加するために願っています。結果はこのように見ている:

Sum.Individuals <- c(5,6,1,6,0,0,4,0) 
Final <- cbind(Surveys,Sum.Individuals) 

> Final 
    Location  Start  End Total.Individuals 
1  A 01/01/2017 01/02/2017     5 
2  B 01/01/2017 01/02/2017     6 
3  C 01/01/2017 01/02/2017     1 
4  D 01/01/2017 01/02/2017     6 
5  A 01/06/2017 01/07/2017     0 
6  B 01/06/2017 01/07/2017     0 
7  C 01/06/2017 01/07/2017     4 
8  D 01/06/2017 01/07/2017     0 

私は任意のヘルプは高く評価され、それが理にかなって願っています。

乾杯

答えて

0

私は、次の手順をお勧めします:

日スタートの間にあると、場所によって
  • グループを終了し起動し、終了場所
  • フィルタリングに両方のテーブルを結合
    1. 。合計個人。助け

      library(tidyverse) 
      library(magrittr) 
      df <- inner_join(surveys,records,by='Location') 
      df %<>% filter(Date >= Start, Date <= End) 
      df %<>% group_by(Location,Start,End) %>% summarise(totalindividuals=sum(individuals) 
      

      希望:

  • はそうのようになる可能性があります。混乱しているコードを見つけたら、参加とフィルタリングのコンセプト、そして一般的には dplyrパッケージを調べて、これらのタスクに非常に関連しているかもしれません。

    +0

    こんにちは、その方法を使用して、私はすべての細胞の合計とただ1つの観測のフレームを得ています。また、私の実際のデータでは、レコードと調査フレームには多くの追加変数があるため、それらに参加できるかどうかはわかりません。歓声 – Charlie3D

    +0

    参加する前に必要な列のサブセット。非等価結合に対して 'data.table'を使用することができます。 – Gregor

    関連する問題