重新排列数据:从水年转换为日历年

2023-12-21

我有一个表,其中包含来自流量计的数据,排列如下:

  Water.Year   May   Jun   Jul   Aug    Sep    Oct    Nov   Dec   Jan   Feb   Mar   Apr 
1  1953-1954 55.55 43.62 30.46 26.17  26.76  41.74  19.92 41.25 28.77 20.96 12.47 10.51
2  1954-1955 23.49 81.35 46.71 29.33  67.83 133.30  37.62 30.16 21.07 19.38 13.87 10.63
3  1955-1956  9.87 51.59 55.36 63.03 154.08  98.15 104.06 32.85 22.89 17.30 15.68 10.88

> data <- structure(list(Water.Year = structure(1:6, .Label = c("1953-1954", "1954-1955", "1955-1956", "1956-1957", "1957-1958", "1958-1959", "1959-1960", "1960-1961", "1961-1962", "1962-1963", "1963-1964", "1964-1965", "1965-1966", "1966-1967", "1967-1968", "1968-1969", "1969-1970", "1970-1971", "1971-1972", "1972-1973", "1973-1974", "1974-1975", "1975-1976", "1976-1977", "1977-1978", "1978-1979", "1979-1980", "1980-1981", "1981-1982", "1982-1983", "1983-1984", "1984-1985", "1985-1986", "1986-1987", "1987-1988", "1988-1989", "1989-1990", "1990-1991", "1991-1992", "1992-1993", "1993-1994", "1994-1995", "1995-1996", "1996-1997", "1997-1998", "1998-1999", "1999-2000", "2000-2001"), class = "factor"), May = c(55.55, 23.49, 9.87, 18.03, 17.46, 11.37), Jun = c(43.62, 81.35, 51.59, 28.61, 15.14, 29.48), Jul = c(30.46, 46.71, 55.36, 24.36, 20.09, 19.48), Ago = c(26.17, 29.33, 63.03, 22.01, 16.97, 16.86), Set = c(26.76, 67.83, 154.08, 28.51, 27.24, 21.01), Oct = c(41.74, 133.3, 98.15, 53.72, 35.78, 19.78), Nov = c(19.92, 37.62, 104.06, 115.78, 20.35, 18.69), Dic = c(41.25, 30.16, 32.85, 32.04, 22, 18.86), Ene = c(28.77, 21.07, 22.89, 25.44, 13.27, 14.89), Feb = c(20.96, 19.38, 17.3, 14.53, 10.37, 10.4), Mar = c(12.47, 13.87, 15.68, 10.78, 8.77, 8.79), Abr = c(10.51, 10.63, 10.88, 9.33, 7.69, 8.99)), .Names = c("Water.Year", "May", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Dic", "Ene", "Feb", "Mar", "Abr"), row.names = c(NA, 6L), class = "data.frame")

它是按“水年”排列的,每年从五月开始,到次年四月结束(这可以在第一栏看到)。 我想将其转换为具有三列的数据框:公历年 -- Month -- 流量测量

我已经分解了水年使用 tidyr 中的“separate”将列分成两列:

> df = separate(data, Water.Year, c("year1","year2"))

   year1 year2   May   Jun   Jul   Aug    Sep    Oct    Nov   Dec   Jan   Feb   Mar   Apr 
 1  1953  1954 55.55 43.62 30.46 26.17  26.76  41.74  19.92 41.25 28.77 20.96 12.47 10.51
 2  1954  1955 23.49 81.35 46.71 29.33  67.83 133.30  37.62 30.16 21.07 19.38 13.87 10.63

现在我计划使用 tidyr 中的“gather”来完成其余的转换,但我坚持如何创建一个公历年列使用year1用于列May to Dec and year2 for Jan to Apr.

任何帮助将不胜感激。


另一个想法(使用带有英语月份的@useR数据)

library(dplyr)
library(tidyr)


df %>%
  separate(Water.Year, c("Year1", "Year2")) %>%
  gather(Month, Value, -(Year1:Year2)) %>%
  group_by(Year1, Year2) %>%
  mutate(Year = if_else(match(Month, month.abb) >= 5, Year1, Year2),
         Month = factor(Month, levels = month.abb)) %>%
  ungroup() %>%
  select(Year, Month, Value) %>%
  arrange(Year, Month)

我们分开Water.Year列入Year1 and Year2我们使用以下方法将数据重塑为长格式gather()。然后,对于每个组,我们使用match() and month.abb检查月份是否大于或等于 5(五月)并指定相应的年份if_else()。最后,我们删除不必要的列并arrange() by Year and Month

## A tibble: 36 × 3
#    Year  Month Value
#   <chr> <fctr> <dbl>
#1   1953    May 55.55
#2   1953    Jun 43.62
#3   1953    Jul 30.46
#4   1953    Aug 26.17
#5   1953    Sep 26.76
#6   1953    Oct 41.74
#7   1953    Nov 19.92
#8   1953    Dec 41.25
#9   1954    Jan 28.77
#10  1954    Feb 20.96
## ... with 26 more rows
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新排列数据:从水年转换为日历年 的相关文章

  • 在 R 中计算大矩阵的零空间

    我找不到任何函数或包来计算 a 的零空间或 QR 分解 bigmatrix from library bigmemory 在 R 中 例如 library bigmemory a lt big matrix 1000000 1000 typ
  • 为特定 ID 重新编码列中的观察结果

    我有一个数据集 称为 调查 其中有行是个人 ID 列中有许多问题 我需要将 1 列中的值重新编码为 NA 并将观察结果移至另一列 例如 ID Fruit Vegetable aaa NA grape bbb NA tomato ccc ap
  • Rcpp 包不包含 Rcpp_precious_remove

    我一直在尝试创建数据库并安装 DBI 包 但仍然遇到此错误 我重新安装了 DBI 和 RSQLite 软件包 但它们似乎不起作用 library DBI con lt dbConnect RSQLite SQLite dbname memo
  • k折交叉验证 - 如何自动获得预测?

    这可能是一个愚蠢的问题 但我只是找不到一个包来做到这一点 我知道我可以编写一些代码来获得我想要的东西 但如果有一个函数可以自动完成它那就太好了 所以基本上我想对 glm 模型进行 k 倍交叉验证 我想自动获取每个验证集的预测和实际值 因此
  • 是否可以创建根据输入对象名称自行命名的列表?

    能够创建 R 列表对象而无需指定每个元素的名称对我来说非常有帮助 例如 a1 lt 1 a2 lt 20 a3 lt 1 20 b lt list a1 a2 a3 inherit name TRUE gt b a1 1 1 a2 1 20
  • “x[] <- as.integer(x)”是什么意思

    当我阅读 R 手册时 我遇到了如下代码行 从 R 手册中的 colSums 复制 x lt cbind x1 3 x2 c 4 1 2 5 dimnames x 1 lt letters 1 8 x lt as integer x 有人能告
  • ggplot2 方面的内部排序

    我正在尝试在 ggplot2 中绘制一个方面 但我很难使不同方面的内部顺序正确 数据如下 head THAT EXT ID FILE GENRE NODE 1 CKC 1823 01 CKC Novels better 2 CKC 1824
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 从 SpatialPolygons 和其他 sp 类中提取要素坐标

    Package sp为不同的空间概念 点 线 多边形 提供了许多类 对于某些类 访问要素坐标很简单 例如SpatialLines 所有示例均取自相应课程的帮助页面 l1 cbind c 1 2 3 c 3 2 2 l1a cbind l1
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 从拟合的 lm 或 glm [R] 获取每个因子水平(以及交互作用)的数据数量

    我在 R 中有一个逻辑回归模型 其中所有预测变量都是分类变量而不是连续变量 除了响应变量 它显然也是分类 二元变量 打电话时summary model name 有没有办法在每个因子水平中包含一个表示观测值数量的列 我在 R 中有一个逻辑回
  • Pyspark - 一次聚合数据帧的所有列[重复]

    这个问题在这里已经有答案了 我想将数据框分组到单个列上 然后对所有列应用聚合函数 例如 我有一个包含 10 列的 df 我希望对第一列 1 进行分组 然后对所有剩余列 均为数字 应用聚合函数 sum 与此等效的 R 是 summarise
  • R闪亮:在渲染表格时显示“正在加载...”消息

    在 Rstudio Shiny 中 我得到了一些renderDataTable通过 RMySQL 从数据库获取信息的调用 有些查询可能需要几秒钟才能完成 我想添加一条 正在加载 消息 其中表格将在等待时最终呈现 这个问题与这个问题类似 R闪
  • 仅基于月份和年份的 SQL Server 日期比较

    我无法确定仅根据月份和年份比较 SQL 中的日期的最佳方法 我们根据日期进行计算 由于计费是按月进行的 因此该月的日期会造成更多障碍 例如 DECLARE date1 DATETIME CAST 6 15 2014 AS DATETIME
  • R 单个变量中的多重图

    嗨 我有下一个代码 par mfrow c 1 3 plot BCxyz 1 BCxyz 2 main Bray Curtis 1 2 pch 20 cex 3 col c blue green red yellow Metadata Sa
  • 如何在 nlme 与 lme4 中指定不同的随机效应?

    我想使用指定模型中的不同随机效应nlme lme 数据在底部 随机效应是 1 intercept and position变化超过subject 2 intercept变化超过comparison 这很简单 使用lme4 lmer lmer
  • 如何与 R 包 sf 进行“完整”联合

    我尝试使用三个多边形之间的并集sf st union 下图中显示了 ArcGIS Overlay Union All 的结果 我希望通过使用 R 中的 sf 包获得与 OUTPUT 中五个不同多边形类似的结果 library sf a1 l
  • 有条件地为 R 中置信带之外的数据点着色

    我需要对下图中置信带之外的数据点与带内的数据点进行不同的着色 我是否应该在数据集中添加一个单独的列来记录数据点是否在置信区间内 您能举个例子吗 示例数据集 Dataset from http www apsnet org education
  • R 中的约束优化

    我正在尝试使用http rss acs unt edu Rdoc library stats html constrOptim html http rss acs unt edu Rdoc library stats html constr
  • python 函数返回 javascript date.getTime()

    我正在尝试创建一个简单的 python 函数 它将返回与 javascript 相同的值new Date getTime 方法 如所写here http www w3schools com js js dates asp javascrip

随机推荐

  • React 中基于当前状态的 setState

    在 React 中更新有状态组件时 组件使用当前状态来更新新状态被认为是一种不好的做法 例如 如果我有一个类存储过滤器在其状态中是否打开 那么在性能方面 用于更新状态的这些选项之一是否比另一个更可取 选项1 class Container
  • 遍历页面上的所有

    我想使用 Javascript 浏览页面上的所有元素 看看它们是否设置了属性 有没有一种简单的方法可以做到这一点 或者我是否必须使用递归解决方案 您可以使用 var divs document getElementsByTagName di
  • 在 Gmaps Api 中使用一个航点作为目的地

    我正在使用 gmaps Api 为必须访问市场列表 我的路径点 以记录其股票的人制定一条路线 我使用用户的房屋位置作为路线的起点 使用市场的位置作为我的路径点 问题是我不知道哪个航路点是路线的目的地 因为我设置了属性optimization
  • Sharepoint、计算列、IF 函数和日期

    我正在尝试添加一个计算列 我有一个日期列 其中包含安排会议的日期 在本专栏中 我需要一个代码 如果会议安排在第一季度 第二季度 第三季度或第四季度 则可以返回该代码 我有一个静态代码 如下所示 IF Date lt 40269 Q1 Q2
  • _spark_metadata 导致问题

    我将 Spark 与 Scala 一起使用 并且我有一个目录 其中有多个文件 在这个目录中 我有 Spark 生成的 Parquet 文件和 Spark Streaming 生成的其他文件 并且Spark Streaming生成一个目录 s
  • 如何让 Wintersmith 中的文章不在其自己的子目录中?

    在 Wintersmith 中 默认博客模板从 content articles index md 生成帖子 这很好 因为它允许将图像等关联文件包含在文章中 但实际上 大多数 博客文章 只是与模板关联的文本内容 必须创建子目录是一个小烦恼
  • iPhone,“尝试注册的过滤专辑列表超过最多 5 个。这将失败。”错误

    当我尝试从照片库中读取图像时 出现错误 尝试注册的过滤相册列表超过最多 5 个 这将失败 图像未读取 知道如何解决这个问题吗 我认为您没有检查源类型 你可能正在做 self sourceType UIImagePickerControlle
  • Unix Shell编程:打印时添加空行

    我试图列出目录中的所有文件 但是如何用空行分隔每个文件 基本上每个文件都用空行分隔显示 我正在尝试使用 for 循环 我确实尝试了几个例子 但没有一个真正通过在之间间隔空行来起作用 for i in ls do echo n ls l do
  • 在所有视图中创建 Telerik Sidedrawer

    我已经成功地让 Telerik Side drawer 在一个视图中工作 但我坚持将其制作成一个可以全局使用的组件 我想避免将其复制并粘贴到每个视图中 所以我的问题是如何将其变成可重用的组件 所以当你使用page router outlet
  • MySQL - 如果尚不存在则插入

    我想执行这个 MySQL 查询 INSERT INTO cron stats user VALUES int d by user 每当此类用户尚不存在时 如下所示 SELECT 1 FROM cron stats WHERE user in
  • git log 中带有 tformat 的额外换行符

    当我使用git log pretty oneline shortstat 我得到了我的日志的紧凑表示 git log pretty oneline shortstat 73c6eecd930c2f66d5c1e87fcca7ca9b0e35
  • 需要一些有关使用 PERL 的 IRC BOTS 的信息

    有谁知道有一款用 Perl 编写的好 irc 机器人吗 我只需要一个简单的登录到该频道 然后根据用户所说的内容进行回复 e g 用户
  • 只让实例访问标签本身?

    看着这个帖子 https serverfault com questions 686526 how do you tag and name the ec2 instance that was launched by an ec2 spot
  • AppStore iOS 应用新版本提交问题

    您好 提前致谢 在尝试使用应用程序加载器向 AppStore 提交新版本的 iOS 应用程序时 我收到了以下消息 ITC apps validation prerelease build missing 并停止提交 我在使用以前版本的 iT
  • GRPC:用Java/Scala制作高吞吐量客户端

    我有一项以相当高的速率传输消息的服务 目前它由 akka tcp 提供服务 每分钟生成 350 万条消息 我决定尝试一下 grpc 不幸的是 它导致吞吐量小得多 每分钟约 500k 条消息 甚至更少 您能推荐一下如何优化吗 My setup
  • 错误:我的 Prolog 代码中超出本地堆栈

    我无法弄清楚为什么给定 Prolog 代码的以下查询会生成错误Out of local stack 序言代码 likes g c likes c a likes c b likes b a likes b d likes X Z likes
  • PHP DOM UTF-8 问题

    首先 我的数据库使用 Windows 1250 作为本机字符集 我将数据输出为 UTF 8 我在我的网站上使用 iconv 函数将 Windows 1250 字符串转换为 UTF 8 字符串 并且效果完美 问题是当我使用 PHP DOM 解
  • 列出 Capybara/Poltergeist 元素的子元素

    我四处寻找 但找不到办法做到这一点 我们正在 EmberJS Rails 应用程序上的 Cucumber 功能中使用 Poltergeist 驱动程序运行 Capybara 测试 我无法使用 page driver debug 因为我在无头
  • 从 Swagger/OpenAPI 生成 Spring MVC 控制器

    有没有办法根据 Swagger OpenAPI 规范生成控制器 Spring MVC 代码 我知道 Swagger 可以从现有的 Spring 代码生成 但是反过来也可能吗 您基本上是在寻找生成 swagger 服务器端代码 如果您想在构建
  • 重新排列数据:从水年转换为日历年

    我有一个表 其中包含来自流量计的数据 排列如下 Water Year May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr 1 1953 1954 55 55 43 62 30 46 26 17 2