r - 使用 as.character(as.Date()) 转换原始因子变量 Date 列后按特定日期对数据框进行子集
问题描述
我对 R 很陌生,正在尝试一些练习题。我有一个大型数据集,我需要从中按日期范围创建一个较小的数据集。我这样做有困难,这可能是因为我对这些 R 命令的作用没有很好的理解。
这是数据集的前六行rawdata
:
Date Time Global_active_power Global_reactive_power Voltage
1 16/12/2006 17:24:00 4.216 0.418 234.840
2 16/12/2006 17:25:00 5.360 0.436 233.630
3 16/12/2006 17:26:00 5.374 0.498 233.290
4 16/12/2006 17:27:00 5.388 0.502 233.740
5 16/12/2006 17:28:00 3.666 0.528 235.680
6 16/12/2006 17:29:00 3.520 0.522 235.020
Global_intensity Sub_metering_1 Sub_metering_2 Sub_metering_3
1 18.400 0.000 1.000 17
2 23.000 0.000 1.000 16
3 23.000 0.000 2.000 17
4 23.000 0.000 1.000 17
5 15.800 0.000 1.000 17
6 15.000 0.000 2.000 17
我想创建此数据的子集,其中日期从 02/01/2007 到 02/02/2007。
从这个线程中,我发现建议首先运行 as.Date 函数(如果需要,还可以运行 as.character 函数),然后运行一个子集函数。
因此,首先,我使用 as.character(rawdata$Date) 将“日期”列从因子转换为字符。意识到这会生成一个完整的数据列表,我将它分配给对象 CharDate,如下所示:
CharDate <- as.character(rawdata$Date)
然后,我使用 as.Date 再次转换数据,打算用它来子集我的 rawdata,将其分配给 DateasDate。
DateasDate <- as.Date(CharDate, "%d/%m/%y")
在这一点上,我很困惑如何使用它来对我的原始文件进行子集化rawdata
,因为这不是DateasDate
一个新变量吗?我必须添加DateasDate
为一列rawdata
吗?有什么方法可以rawdata
直接更改 Date 列,这样我就不必这样做了?
任何帮助将非常感激!!
解决方案
您可以先将Date
对象转换为实际日期,然后再转换subset
为数据框。
df$Date <- as.Date(df$Date, "%d/%m/%Y")
subset(df, Date >= as.Date("2007-01-02") & Date <= as.Date("2007-02-02"))
或者使用相同的逻辑dplyr
library(dplyr)
df %>%
mutate(Date = as.Date(Date, "%d/%m/%Y") %>%
filter(Date >= as.Date("2007-01-02") & Date <= as.Date("2007-02-02"))
推荐阅读
- asp.net-core - .NET Core 2.1 MVC 身份授权 - 不同部分的不同用户角色
- javascript - 从数据库中设置重复字段的值
- python - Python - 熊猫直方图宽度
- javascript - 如何在 TSX 中将值从子组件传递给父组件?
- python - Pyqt gui,带有放置在背景图像上的按钮和数字指示器
- python - git clone 的 Python 进度条
- tfs - TFS 自动构建:Nuget Pack 失败并显示代码 (1)
- database - 需要帮助编写代码以在 Excel 中将特定数据从一张工作表移动到另一张工作表
- intershop - 以应用程序级别定义的货币获取产品价格
- python-2.7 - 错误:save() 得到了一个意外的关键字参数“格式”