根据月份日期向数据表添加季节列

2023-12-03

我正在使用 data.table,我正在尝试创建一个名为“season”的新列,它基于名为“MonthName”的列创建一个具有相应季节的列,例如夏季、冬季...。

我想知道是否有更有效的方法来根据月份值将季节列添加到数据表中。

这是 300,000 个观测值中的前 6 个,假设该表名为“dt”。

    rrp         Year   Month Finyear hourminute AvgPriceByTOD MonthName
1: 35.27500     1999     1    1999      00:00      33.09037       Jan
2: 21.01167     1999     1    1999      00:00      33.09037       Jan
3: 25.28667     1999     2    1999      00:00      33.09037       Feb
4: 18.42334     1999     2    1999      00:00      33.09037       Feb
5: 16.67499     1999     2    1999      00:00      33.09037       Feb
6: 18.90001     1999     2    1999      00:00      33.09037       Feb

我尝试过以下代码:

dt[, Season :=  ifelse(MonthName = c("Jun", "Jul", "Aug"),"Winter", ifelse(MonthName = c("Dec", "Jan", "Feb"), "Summer", ifelse(MonthName = c("Sep", "Oct", "Nov"), "Spring" , ifelse(MonthName = c("Mar", "Apr", "May"), "Autumn", NA))))]

返回:

 rrp totaldemand   Year Month Finyear hourminute AvgPriceByTOD MonthName Season
1: 35.27500     1999     1    1999      00:00      33.09037       Jan     NA
2: 21.01167     1999     1    1999      00:00      33.09037       Jan Summer
3: 25.28667     1999     2    1999      00:00      33.09037       Feb Summer
4: 18.42334     1999     2    1999      00:00      33.09037       Feb     NA
5: 16.67499     1999     2    1999      00:00      33.09037       Feb     NA
6: 18.90001     1999     2    1999      00:00      33.09037       Feb Summer

我收到错误:

Warning messages:
1: In MonthName == c("Jun", "Jul", "Aug") :
  longer object length is not a multiple of shorter object length
2: In MonthName == c("Dec", "Jan", "Feb") :
  longer object length is not a multiple of shorter object length
3: In MonthName == c("Sep", "Oct", "Nov") :
  longer object length is not a multiple of shorter object length
4: In MonthName == c("Mar", "Apr", "May") :
  longer object length is not a multiple of shorter object length 

除此之外,由于我不知道的原因,一些夏季月份被正确分配为“夏季”,但其他月份被分配为 NA,例如,第 1 行和第 2 行都应该是夏季,但返回不同。

提前致谢!


一种非常简单的方法是使用查找表将月份名称映射到季节:

# create a named vector where names are the month names and elements are seasons
seasons <- rep(c("winter","spring","summer","fall"), each = 3)
names(seasons) <- month.abb[c(6:12,1:5)] # thanks thelatemail for pointing out month.abb
seasons
#     Jun      Jul      Aug      Sep      Oct      Nov      Dec      Jan 
#"winter" "winter" "winter" "spring" "spring" "spring" "summer" "summer" 
#     Feb      Mar      Apr      May 
#"summer"   "fall"   "fall"   "fall" 

Use it:

dt[, season := seasons[MonthName]]

data:

dt <- setDT(read.table(text="    rrp         Year   Month Finyear hourminute AvgPriceByTOD MonthName
1: 35.27500     1999     1    1999      00:00      33.09037       Jan
2: 21.01167     1999     1    1999      00:00      33.09037       Jan
3: 25.28667     1999     2    1999      00:00      33.09037       Feb
4: 18.42334     1999     2    1999      00:00      33.09037       Feb
5: 16.67499     1999     2    1999      00:00      33.09037       Feb
6: 18.90001     1999     2    1999      00:00      33.09037       Feb",
   header = TRUE, stringsAsFactors = FALSE))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据月份日期向数据表添加季节列 的相关文章

  • R - 正则表达式错误(PCRE 版本)

    我正在尝试使用koRpus在 R 中在运行 RHEL6 的 Linux 服务器上进行词形还原 上周 当我安装了 MRO Microsoft R Open 3 2 3 时 下面的代码效果很好 library koRpus lw c danci
  • 如何使用 r 中的 caret 包在最佳调整超参数的 10 倍交叉验证中获得每次折叠的预测?

    我试图使用 R 中的插入符包使用 10 倍交叉验证和 3 次重复来运行 SVM 模型 我想使用最佳调整的超参数获得每次折叠的预测结果 我正在使用以下代码 Load packages library mlbench library caret
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 分离并重新附加“tools:rstudio”

    又名玩火 以下不起作用 rstd obj lt as environment tools rstudio detach tools rstudio attach rstd obj name tools rstudio 好吧 它似乎有效 但随
  • 在 mac (iMac OSX ) 终端中远程运行脚本(r 脚本)到其他计算机

    我有一个小示例脚本 script p r 如下所示 打算在终端中运行 usr bin Rscript sink output capture txt mn lt mean 1 10 and so on much longer list of
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • C# 优化:向数据库插入 2 亿行

    我有以下 简化的 代码 我想优化速度 long inputLen 50000000 50 million DataTable dataTable new DataTable DataRow dataRow object objectRow
  • 将列表中的列转换为 R 中的数据框

    我有使用 R 创建的以下列表 set seed 326581 X1 rnorm 10 0 1 Y1 rnorm 10 0 2 data data frame X1 Y1 lst lt replicate 100 df smpl lt dat
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x

随机推荐

  • MySQL 中的排序/排序

    我在尝试对表格内容进行排序时遇到一些问题programs按列prog id它以以下格式保存每个程序的 id prog id 1 0 1 1 0 2 1 0 3 1 0 10 1 0 11 1 1 0 1 1 1 等 当我按 prog id
  • 在 unix shell 中更改目录(特殊字符)

    我的目录名称以 开头 怎么用cd进入呢 基本转义字符不起作用 cd smol bash cd invalid option cd usage cd L P e dir cd smol bash cd invalid option cd us
  • 如何更改引用 dll 复制到的位置?

    我正在使用一些库 并且添加了对该库 dll 的引用 并将 复制本地 设置为 true 但我想将dll的位置更改为exe文件夹中的子文件夹 而不是与exe一起 这怎么可能 thanks Update 我使用了以下构建后事件 如 Jon Ske
  • 将 Outlook 暂停指定时间

    我尝试在收到电子邮件 10 秒后运行 Outlook 代码 我尝试使用application wait但您似乎无法使用 Outlook 执行此操作 如何将 Outlook 暂停指定的时间 您可以创建一个 Sub 来模仿Application
  • 从简单列表创建下拉菜单

    我当前的列表如下所示 ul li a href Menu 1 a li li a href Submenu a a li li a href Submenu b a li li a href Submenu c a li li a href
  • 使用 Django REST 框架 Render 返回图像

    我使用上传图像Django REST 框架 现在我试图返回与响应相同的图像 views py class ImageUploadView viewsets ModelViewSet queryset ImageModel objects a
  • ASP.NET网站的BIN目录和引用

    想象一下以下解决方案 网站 ABC com 非 Web 应用程序 BLL 单独程序集中的业务逻辑层 DTO 自己程序集中的 dto 对象 DAL 也在其自己的程序集中的数据访问层 BLL 引用了 DAL BLL 引用了 DTO 层 网站项目
  • 使用 CSS 缩小图像……图像在多个浏览器中变得模糊

    我在多个浏览器中遇到缩小 IMG 的问题 图像需要缩小 因为它们响应浏览器大小 这是我的代码 pic holder img moz transform rotate 0deg image rendering webkit optimize
  • Kubernetes 未知领域“行为”

    我正在 Kubernetes 中创建 Horizo ntalPodAutoscaler 我需要将缩减稳定窗口配置为小于默认值 使用的代码和错误如下 apiVersion autoscaling v2beta2 kind Horizontal
  • 在pyspark中不使用pivot进行分组的有效方法

    我有一个查询 需要使用 pyspark 计算内存利用率 我已经使用pivot 使用 python pandas 实现了这一点 但现在我需要在 pyspark 中执行此操作 而旋转将是一个昂贵的功能 所以我想知道 pyspark 中是否有任何
  • 绑定到 ItemsControl 中的 CurrentItem

    下面的 XAML 基本上是试图列出以下内容Buttons 由Name中对象的属性Views当前集合DataContext 当我点击一个按钮时CurrentItem的财产CollectionViewSource应该改变和相关的View应显示在
  • Spring Boot 过滤器调用了两次或根本没有调用

    我实现了一个自定义过滤器 它将请求的 cookie 中的一些内容添加到其标头中 Component Slf4j public class MyCustomFilter implements Filter Override public vo
  • 如何使用 livedata 从服务更新 UI?

    我正在创建播放器应用程序 我想为我的媒体播放器使用前台服务 我需要使用服务中的实时数据更新 UI 我已经阅读过有关使用广播接收器的信息 但我想使用 livedata 假设您使用具有实时数据的服务 如下所示 class MusicServic
  • 组合时间序列对象和列表:包“termstrc”

    R 包 termstrc 专为术语结构估计而设计 是一个非常有用的工具 但它需要以一种特别尴尬的格式设置数据 列表中的列表 Question 为了创建运行函数 dyncouponbonds 所需的重复子列表格式 在 R 外部或内部准备和调整
  • 更新 pygame 中的文本

    我在这里做错了什么 我想更新标签的文本以适应玩家得分 我查看了其他示例并添加了更新方法 但文本仍然保持不变 class Label def init self txt location size 160 30 bg WHITE fg BLA
  • youtube 嵌入视频 pregreplace 与开始计时

    在我们的论坛上 我们目前用嵌入对象替换了所有 YouTube 链接 感谢以下答案 如何使用正则表达式查找字符串中的所有 YouTube 视频 ID 问题是 我们的许多用户希望直接发布指向视频中特定时间的链接 例如 注意 t 1m15s 根据
  • SQL Bigquery:将特定组的选择限制为 10

    下面是示例表 目前 该表对于每个 ID 都有无限的条目 我的要求是 首先按 rand 升序对 ID 进行排序 然后只取前 2 行 ID 和 companies CREATE TABLE table name ID int companies
  • 将 Jetty 绑定到 IPv6 地址

    我正在尝试将 Jetty 绑定为仅侦听 IPv6 地址 我正在使用 Jetty 7 4 2 v20110526 我的jetty xml
  • 在图像上绘制对角线

    您好 我正在尝试在图像的右上角到左下角之间绘制对角线 这是到目前为止我的代码 width getWidth picture height getHeight picture for x in range 0 width for y in r
  • 根据月份日期向数据表添加季节列

    我正在使用 data table 我正在尝试创建一个名为 season 的新列 它基于名为 MonthName 的列创建一个具有相应季节的列 例如夏季 冬季 我想知道是否有更有效的方法来根据月份值将季节列添加到数据表中 这是 300 000