使用来自另一个表的数据进行部分求和和计算

时间:2018-12-17 13:01:44

标签: r dataframe sum

我的目标是使用两个不同的数据集对降水进行时间分解:

1)包含观测的日/小时数据和带有降水观测值的列, 2)另一个包含每日总降水量信息的数据集。

首先,我想为第一个数据集创建一个新列 Percent ,该列将包含来自 Value 列的全天降雨的比例分布。之后,我想从其他数据集中获取相应的(根据日期)降水总量,并使用新创建的列 Percent 暂时将其分解,并创建一个列,例如 NewValue

由于我有3年的观察经验,所以我想自动进行操作。

请在下面找到我想要达到的结果的可复制示例:

dates = seq(as.POSIXct("2015-1-1 23:00"), as.POSIXct("2015-1-2 23:00"), by = "hour")
Value = c(0,0.15,0.1,0,0,0.3,0.4,0.5,0,0,0,0,0,0,0.6,0.1,0,0,0,0,0,0.3,0.5,0,0)
Percent = c(0,0.05,0.03,0,0,0.1,0.14,0.17,0,0,0,0,0,0,0.2,0.03,0,0,0,0,0,0.1,0.17,0,0)
NewValue = c(0,0.1,0.07,0,0,0.2,0.27,0.34,0,0,0,0,0,0,0.41,0.07,0,0,0,0,0,0.2,0.34,0,0)

DATA = data.frame(dates, Value, Percent, NewValue)

在上面的示例中,我将2015-1-1的日降水量设为0,将另一天的降水量设为2 mm。

1 个答案:

答案 0 :(得分:0)

我不了解NewValue的计算方式,也无法提供输入数据集,因此我必须创建自己的数据。

# hourly precip
d1 <- data.frame(dates=seq(as.POSIXct("2015-1-1 01:00"), 
                 as.POSIXct("2015-1-3 23:00"), by = "hour"), precip=runif(71))
# calc d2 : not needed in your case
d2 <- ddply(d1, .(day=as.Date(dates)), summarize, precipsum=sum(precip))

# calc relative precip
d1$day <- as.Date(d1$dates)
out <- merge(d1, d2, by='day')
out$Percent <- out$precip / out$precipsum