簡體   English   中英

我想在 dataframe 中迭代,在另一個 dataframe 中添加值(新列)

[英]I want to iterate in dataframe adding value( new column) in another dataframe

我有一個 dataframe,日期在一行中:ej:

CULTIVAR/ START DATE / END DATE

x / 11.02.2020  / 11.02.2021

另一個 Dataframe 包含天數和環境變量列表:ej:

 Date                Humidity

01.01.2020 /   80

02.01.2020 /   85

03.01.2020 /   90

我需要一個代碼來根據當天的比賽將環境變量添加到第一個 dataframe。 因此,如果我需要品種 X 從開始日期到結束日期的平均濕度,它會轉到第二個 dataframe 並遍歷日期,對它們進行處理並在第一個 dataframe 中添加平均濕度。

一種使用R的方法,通過檢查df2的日期是否在df1的給定開始和結束日期范圍內,將mean_humidity添加到第一個數據框

示例數據

df1
  cul      start        end
1   x 2020-02-11 2020-03-22
2   y 2020-03-11 2020-03-12
3   z 2020-04-11 2020-04-11
4   o 2020-05-11 2020-05-11

df2
        date humidity
1 2020-02-11       34
2 2020-03-11       45
3 2020-03-12       26
4 2020-03-13       65
5 2020-04-11       67
6 2020-05-15       78

利用

df1$mean_humidity <- rowMeans(
  sapply(seq_along(df2$date), function(x) 
    ifelse(df2$date[x] >= df1$start & 
           df2$date[x] <= df1$end, 
           df2$humidity[x], NA)
  ), na.rm=T)

df1
  cul      start        end mean_humidity
1   x 2020-02-11 2020-03-22          42.5
2   y 2020-03-11 2020-03-12          35.5
3   z 2020-04-11 2020-04-11          67.0
4   o 2020-05-11 2020-05-11           NaN

dput() 數據

df1 <- structure(list(cul = c("x", "y", "z", "o"), start = structure(c(18303, 
18332, 18363, 18393), class = "Date"), end = structure(c(18343, 
18333, 18363, 18393), class = "Date")), class = "data.frame", row.names = c(NA, 
-4L))

df2 <- structure(list(date = structure(c(18303, 18332, 18333, 18334, 
18363, 18397), class = "Date"), humidity = c(34, 45, 26, 65, 
67, 78)), row.names = c(NA, -6L), class = "data.frame")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM