R 数据帧上的过滤日期
我需要在R中过滤一个大数据集100K+的观测值,以便它只包含2014年至今的数据。原始数据包含2001年至今的观察结果。以下是要使用的示例数据:R 数据帧上的过滤日期,r,date,datetime,R,Date,Datetime,我需要在R中过滤一个大数据集100K+的观测值,以便它只包含2014年至今的数据。原始数据包含2001年至今的观察结果。以下是要使用的示例数据: df <- data.frame(student = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), GPA = c(4,3.7,2.0,1.3,2.9,2.4,4.0,3.0,2.0,3.3), Failed_Course = c(1,0,1,1,1,1,1,1,1,0),
df <- data.frame(student = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), GPA = c(4,3.7,2.0,1.3,2.9,2.4,4.0,3.0,2.0,3.3),
Failed_Course = c(1,0,1,1,1,1,1,1,1,0),
Exam_date = c ("01/06/2010 06:55:00 AM", "03/30/2020 11:55:00 PM","12/30/2014 12:55:00 AM","04/20/2016 11:55:00 PM","09/28/2014 11:12:00 PM","07/30/2017 11:55:00 PM", "4/3/2005 09:55:00 PM",
"8/20/2004 11:55:00 PM","8/20/2015 11:22:00 AM","6/22/2001 08:55:00 PM"))
使用dplyr和润滑油
下面是一个基本的R方法
df$Exam_date <- as.POSIXct(df$Exam_date,format = "%m/%d/%Y %I:%M:%S %p", tz="UTC")
df[df$Exam_date > as.POSIXct("2014-01-01 00:00:00"),]
# student GPA Failed_Course Exam_date
#2 2 3.7 0 2020-03-30 23:55:00
#3 3 2.0 1 2014-12-30 00:55:00
#4 4 1.3 1 2016-04-20 23:55:00
#5 5 2.9 1 2014-09-28 23:12:00
#6 6 2.4 1 2017-07-30 23:55:00
#9 9 2.0 1 2015-08-20 11:22:00
那么你的问题是什么?你在过滤方面做过什么努力吗?注意:您需要将这些日期/时间字符串转换为可识别的R POSIX*类型。外面有很多。尝试一下,然后返回具体问题。谢谢。这真的很有帮助。太棒了,没问题。如果它解决了您的问题,请考虑通过单击绿色复选标记来标记它。您的输出不正确。请检查as.POSIXct的输出。例如,2020年3月30日11:55:00 PM转换为2020-03-30 11:55:00 UTC。应该是协调世界时2020-03-30 23:55:00。
df$Exam_date <- as.POSIXct(df$Exam_date,format = "%m/%d/%Y %I:%M:%S %p", tz="UTC")
df[df$Exam_date > as.POSIXct("2014-01-01 00:00:00"),]
# student GPA Failed_Course Exam_date
#2 2 3.7 0 2020-03-30 23:55:00
#3 3 2.0 1 2014-12-30 00:55:00
#4 4 1.3 1 2016-04-20 23:55:00
#5 5 2.9 1 2014-09-28 23:12:00
#6 6 2.4 1 2017-07-30 23:55:00
#9 9 2.0 1 2015-08-20 11:22:00