在R中转换和分离日期时出现问题
我有一个数据集,其中包含CSV中列出的一些日期,如dd/mm/yy,我的最终目标是将年份列分离为一个单独的列,但它似乎给了我一些非常奇怪的结果 当CSV输入到R中时,数据集(dframe1)会自动将日期显示为因子,例如8/3/05,但它们并非都是这种格式,有些是8/3/2005,有些是08/03/2005(应该是这样),这意味着当我转换它们时,有些日期会像它们应该的那样出现(即2004-11-5)有些人的表现非常奇怪(即0004-11-5)。。我检查了excel电子表格,它们的格式都完全相同,用相同的格式编写,转换代码也完全相同,但似乎不起作用 下面是我导入R的示例,尽管在excel中它们都是相同的:在R中转换和分离日期时出现问题,r,excel,date,date-conversion,as.date,R,Excel,Date,Date Conversion,As.date,我有一个数据集,其中包含CSV中列出的一些日期,如dd/mm/yy,我的最终目标是将年份列分离为一个单独的列,但它似乎给了我一些非常奇怪的结果 当CSV输入到R中时,数据集(dframe1)会自动将日期显示为因子,例如8/3/05,但它们并非都是这种格式,有些是8/3/2005,有些是08/03/2005(应该是这样),这意味着当我转换它们时,有些日期会像它们应该的那样出现(即2004-11-5)有些人的表现非常奇怪(即0004-11-5)。。我检查了excel电子表格,它们的格式都完全相同,用
2 11/11/04
3 11/11/04
4 11/11/04
5 11/11/04
6 11/11/04
7 11/11/04
8 11/11/04
9 11/11/04
10 5/3/05
11 5/3/05
12 5/3/05
13 5/3/05
14 5/3/05
15 5/3/05
16 5/3/05
17 3/11/05
18 3/11/05
19 3/11/05
20 3/11/05
21 3/11/05
22 3/11/05
23 3/11/05
24 3/11/05
25 3/11/05
26 3/11/05
27 9/6/06
28 9/6/06
29 9/6/06
30 9/6/06
31 9/6/06
32 9/6/06
33 9/6/06
34 9/6/06
35 11/8/06
36 11/8/06
37 11/8/06
38 11/8/06
39 11/8/06
40 11/8/06
41 11/8/06
42 11/8/06
43 22/02/2007
44 22/02/2007
45 22/02/2007
46 22/02/2007
47 22/02/2007
48 22/02/2007
49 22/02/2007
50 7/2/08
51 7/2/08
52 7/2/08
53 7/2/08
54 7/2/08
55 7/2/08
56 8/5/08
57 8/5/08
58 8/5/08
59 8/5/08
60 25/03/2012
61 25/03/2012
62 25/03/2012
63 25/03/2012
64 25/03/2012
65 25/03/2012
我想要用来转换的代码如下:
数据=数据帧1
Set.date、Haul.date、date.depart和date.return都是dframe1中的列
首先,我要确保R知道日期列实际上是日期(而不是自动假设的因素)
dframe1$Set.date首先,Excel不会显示CSV文件中日期/时间字符串的实际文本格式,而是将其转换为Excel格式进行显示。您应该在文本编辑器中打开CSV并查看其中的日期以验证格式
其次,您可以使用lubridate
软件包使处理日期/时间变得更加容易。例如,您可以执行以下操作:
library(lubridate)
dframe1$Set.date <- dmy(dframe1$Set.date)
dframe1$Set.year <- year(dframe1$Set.date)
库(lubridate)
dframe1$Set.date首先,Excel不会显示CSV文件中日期/时间字符串的实际文本格式,而是将其转换为Excel格式显示。您应该在文本编辑器中打开CSV并查看其中的日期以验证格式
其次,您可以使用lubridate
软件包使处理日期/时间变得更加容易。例如,您可以执行以下操作:
library(lubridate)
dframe1$Set.date <- dmy(dframe1$Set.date)
dframe1$Set.year <- year(dframe1$Set.date)
库(lubridate)
dframe1$Set.date首先,Excel不会显示CSV文件中日期/时间字符串的实际文本格式,而是将其转换为Excel格式显示。您应该在文本编辑器中打开CSV并查看其中的日期以验证格式
其次,您可以使用lubridate
软件包使处理日期/时间变得更加容易。例如,您可以执行以下操作:
library(lubridate)
dframe1$Set.date <- dmy(dframe1$Set.date)
dframe1$Set.year <- year(dframe1$Set.date)
库(lubridate)
dframe1$Set.date首先,Excel不会显示CSV文件中日期/时间字符串的实际文本格式,而是将其转换为Excel格式显示。您应该在文本编辑器中打开CSV并查看其中的日期以验证格式
其次,您可以使用lubridate
软件包使处理日期/时间变得更加容易。例如,您可以执行以下操作:
library(lubridate)
dframe1$Set.date <- dmy(dframe1$Set.date)
dframe1$Set.year <- year(dframe1$Set.date)
库(lubridate)
dframe1$Set.date如果您的所有日期都在过去14年内,那么这应该可以:
dat$dat2 <- gsub("/([0-9]{2})$", "/20\\1", dat$date)
library(lubridate)
dat$dat3 <- dmy(dat$dat2)
dat$dat2如果您的所有日期都在过去14年内,那么这应该可以:
dat$dat2 <- gsub("/([0-9]{2})$", "/20\\1", dat$date)
library(lubridate)
dat$dat3 <- dmy(dat$dat2)
dat$dat2如果您的所有日期都在过去14年内,那么这应该可以:
dat$dat2 <- gsub("/([0-9]{2})$", "/20\\1", dat$date)
library(lubridate)
dat$dat3 <- dmy(dat$dat2)
dat$dat2如果您的所有日期都在过去14年内,那么这应该可以:
dat$dat2 <- gsub("/([0-9]{2})$", "/20\\1", dat$date)
library(lubridate)
dat$dat3 <- dmy(dat$dat2)
dat$dat2谢谢@Ajar!这很有帮助。我在文本编辑器中打开了文件,事实上你是对的,日期的格式不同。有没有一种方法可以让所有的日期格式保持一致,或者我必须在文本编辑中手动完成?这取决于它们的不同程度。如果唯一的区别是2004年5月8日和2004年5月8日,那么ymd()将以相同的方式解析这两种情况。谢谢@Ajar!这很有帮助。我在文本编辑器中打开了文件,事实上你是对的,日期的格式不同。有没有一种方法可以让所有的日期格式保持一致,或者我必须在文本编辑中手动完成?这取决于它们的不同程度。如果唯一的区别是2004年5月8日和2004年5月8日,那么ymd()将以相同的方式解析这两种情况。谢谢@Ajar!这很有帮助。我在文本编辑器中打开了文件,事实上你是对的,日期的格式不同。有没有一种方法可以让所有的日期格式保持一致,或者我必须在文本编辑中手动完成?这取决于它们的不同程度。如果唯一的区别是2004年5月8日和2004年5月8日,那么ymd()将以相同的方式解析这两种情况。谢谢@Ajar!这很有帮助。我在文本编辑器中打开了文件,事实上你是对的,日期的格式不同。有没有一种方法可以让所有的日期格式保持一致,或者我必须在文本编辑中手动完成?这取决于它们的不同程度。如果唯一的区别是2004年5月8日和2004年5月8日,那么ymd()将以相同的方式解析这两个方面。从文本文件中发布足够的材料以允许测试,我已经发布了一个我试图从中提取的专栏。谢谢从文本文件中发布足够的材料以允许测试,我已经发布了一个我试图从中提取的专栏。谢谢从文本文件中发布足够的材料以允许测试,我已经发布了一个我试图从中提取的专栏。谢谢从文本文件中发布足够的材料以允许测试,我已经发布了一个我试图从中提取的专栏。谢谢