[英]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
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.