2016-03-20 15 views
-1

日付に基づいて2つのデータセットをマージし、特定の日付を別のカテゴリとして定義したいと考えています。最初のdata.frameは、日付を持つ水質データです。以下のように表示されます(データの最初の数行)。R:異なる日付に基づいて2つのデータフレームをマージする方法

Organization ID Latitude Longitude  Date Year Month Day  Depth 
1  NJHDG 19 40.6475 -74.17350 2010-06-02 2010  6 2  Surface 
2  NJHDG 14 40.7919 -74.07837 2010-06-03 2010  6 3 Near Bottom 
3  NJHDG 2 40.9212 -74.17550 2010-06-07 2010  6 7 Midwater 
4  NJHDG 5 40.8795 -74.12066 2010-06-09 2010  6 9 Midwater 
5 31ISC2RS_WQX HR8A 40.9850 -73.90833 2010-06-10 2010  6 10  Surface 
6  NJHDG 6 40.8890 -74.08166 2010-06-14 2010  6 14 Midwater 

ここで、別のdata.frameが降水量データ(以下に示すサンプル)を持っています。

Date PrecipitationIn 
    128 2010-05-08   0.03 
    129 2010-05-09   0.00 
    130 2010-05-10   0.00 
    131 2010-05-11   0.04 
    132 2010-05-12   0.33 
    133 2010-05-13   0.00 

質問は、私は、現在の日付、前の1日、前の2日降水量データを用いて> = 0.2インチを持っている場合は、「濡れた日」として、第1データフレームに日付を定義したいということです。 たとえば、最初のデータフレームの日付「2010-06-02」。 「2010-5-31」または「2010-6-01」または「2010-6-02」の降水量が0.2インチ以上の場合、「2010-06-02」を「濡れた日」と定義します。それ以外の場合は、「乾いた日」を定義します。私はループのために使用しようとすると関数を定義するが、私は失敗した。誰でも私がこの問題を解決するのに役立つ素晴らしいアイデアを持っていますか?ほんとうにありがとう。

答えて

1

オクラホマ - 質問が正しく表示されているかどうかはわかりません。おそらくこの例は、あなたが探しているものを達成するためのアイデアを提供します。

A <- read.table("path/to/your/dataset1", sep = " ", header = TRUE) 
B <- read.table("path/to/your/dataset2", sep = " ", header = TRUE) 

C <- merge(A, B, by = "Date") 

C <- data.frame(C, day.type = NA) 

for (i in 1:nrow(C)){ 
    if (i == 1) { 
    if (C$PrecipitationIn[i] >= 0.2) { 
     C$day.type[i] <- "wet day" 
    } else { 
     C$day.type[i] <- "dry day" 
    } 
    } else if (i == 2) { 
    if (C$PrecipitationIn[i] >= 0.2 & C$PrecipitationIn[i-1] >= 0.2) { 
     C$day.type[i] <- "wet day" 
    } else { 
     C$day.type[i] <- "dry day" 
    } 
    } else if (i > 2) { 
    if (C$PrecipitationIn[i] >= 0.2 & C$PrecipitationIn[i-1] >= 0.2 & C$PrecipitationIn[i-2] >= 0.2) { 
     C$day.type[i] <- "wet day" 
    } else { 
     C$day.type[i] <- "dry day" 
    } 
    } 
} 
関連する問題