r - 与另一个表中的数据进行部分求和和计算
问题描述
我的目标是使用两个不同的数据集对降水进行时间分解:
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 毫米。
解决方案
我不明白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
推荐阅读
- css - SVG currentColor 在 GitHub README 中不起作用?
- css - Tailwind:无法让元素填充宽度
- javascript - 基于具有多个标签的搜索输入隐藏和显示 div
- c++ - 在构建 vulkan 程序时无法引用“vkGetAccelerationStructureBuildSizesKHR”
- matlab - 用于 Gauss-Seidel 的 Matlab 代码更改 SOR 方法
- c - Intel realsense T265 姿势配置 C API
- python-3.x - 如何在 python tkinter 库中获取检查按钮的值?
- c++ - 如何使用 shared_ptr 管理放置 new 的对象?
- c# - 如何动态创建具有 List 属性的类(c#)?
- c++ - 如何遍历结构中的 unordered_map?