Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在r中加载具有不同时间格式的csv文件_R - Fatal编程技术网

在r中加载具有不同时间格式的csv文件

在r中加载具有不同时间格式的csv文件,r,R,是否可以将数据加载到具有不同日期时间格式的R中?例如,我有一个.csv文件,它的开头是: DATE,d1,d2 1990-12-07 09:36,6.1,3.7 1990-12-07 10:36,6.9,3.7 1990-12-07 11:36,6.9,3.7 1990-12-07 16:36,8.1,4 1990-12-07 18:36,7,3.9 1990-12-07 21:36,6.5,3.8 1990-12-07 22:36,6.4,3.8 07/13/1990 06:36,5.4,3.

是否可以将数据加载到具有不同日期时间格式的R中?例如,我有一个.csv文件,它的开头是:

DATE,d1,d2
1990-12-07 09:36,6.1,3.7
1990-12-07 10:36,6.9,3.7
1990-12-07 11:36,6.9,3.7
1990-12-07 16:36,8.1,4
1990-12-07 18:36,7,3.9
1990-12-07 21:36,6.5,3.8
1990-12-07 22:36,6.4,3.8
07/13/1990 06:36,5.4,3.7
07/13/1990 13:36,5.3,4.2
07/13/1990 14:36,5.2,4.6
07/13/1990 15:36,5,4.2
07/13/1990 16:36,5.1,4.2
其中日期时间格式从这两种格式中随机更改。尝试将此文件加载到R(标准方式)时,返回:

d <- read.table('filename.csv', 
                header = TRUE, sep = ',')
> d[1:9,]
                DATE  T1  T2
1   1990-12-07 09:36 6.1 3.7
2   1990-12-07 10:36 6.9 3.7
3   1990-12-07 11:36 6.9 3.7
4   1990-12-07 16:36 8.1 4.0
5   1990-12-07 18:36 7.0 3.9
6   1990-12-07 21:36 6.5 3.8
7   1990-12-07 22:36 6.4 3.8
8   07/13/1990 06:36 5.4 3.7
9   07/13/1990 13:36 5.3 4.2

不知道他们为什么决定使用这个randon格式

我希望输出为:

DATE,d1,d2
1990-07-12 09:36,6.1,3.7
1990-07-12 10:36,6.9,3.7
1990-07-12 11:36,6.9,3.7
1990-07-12 16:36,8.1,4
1990-07-12 18:36,7,3.9
1990-07-12 21:36,6.5,3.8
1990-07-12 22:36,6.4,3.8
1990-07-13 06:36,5.4,3.7
1990-07-13 13:36,5.3,4.2
1990-07-13 14:36,5.2,4.6
1990-07-13 15:36,5,4.2
1990-07-13 16:36,5.1,4.2

如果要对值进行操作,最好确保值为
字符
类,从而在读取数据时添加
,stringsAsFactors=FALSE
。然后,我们可以使用一些正则表达式,以便只操纵感兴趣的值

添加
时读取数据,stringsAsFactors=FALSE

df <- read.csv(text = "DATE,d1,d2
1990-12-07 09:36,6.1,3.7
1990-12-07 10:36,6.9,3.7
1990-12-07 11:36,6.9,3.7
1990-12-07 16:36,8.1,4
1990-12-07 18:36,7,3.9
1990-12-07 21:36,6.5,3.8
1990-12-07 22:36,6.4,3.8
07/13/1990 06:36,5.4,3.7
07/13/1990 13:36,5.3,4.2
07/13/1990 14:36,5.2,4.6
07/13/1990 15:36,5,4.2
07/13/1990 16:36,5.1,4.2", stringsAsFactors = FALSE)

df您想要哪种格式?最好是yyyy-mm-dd-HH:mm格式,as.posixct这就是我发布的格式。您已经发布了yyyy-dd-mm-HH:mm,请注意第8行中的13,第13个月?12是12月,即一年中的第12个月
DATE,d1,d2
1990-07-12 09:36,6.1,3.7
1990-07-12 10:36,6.9,3.7
1990-07-12 11:36,6.9,3.7
1990-07-12 16:36,8.1,4
1990-07-12 18:36,7,3.9
1990-07-12 21:36,6.5,3.8
1990-07-12 22:36,6.4,3.8
1990-07-13 06:36,5.4,3.7
1990-07-13 13:36,5.3,4.2
1990-07-13 14:36,5.2,4.6
1990-07-13 15:36,5,4.2
1990-07-13 16:36,5.1,4.2
df <- read.csv(text = "DATE,d1,d2
1990-12-07 09:36,6.1,3.7
1990-12-07 10:36,6.9,3.7
1990-12-07 11:36,6.9,3.7
1990-12-07 16:36,8.1,4
1990-12-07 18:36,7,3.9
1990-12-07 21:36,6.5,3.8
1990-12-07 22:36,6.4,3.8
07/13/1990 06:36,5.4,3.7
07/13/1990 13:36,5.3,4.2
07/13/1990 14:36,5.2,4.6
07/13/1990 15:36,5,4.2
07/13/1990 16:36,5.1,4.2", stringsAsFactors = FALSE)
indx <- grepl("/", df$DATE)
df[indx, "DATE"] <- sub("(\\d{2})/(\\d{2})/(\\d{4})", "\\3-\\2-\\1", df[indx, "DATE"])
df
#                DATE  d1  d2
# 1  1990-12-07 09:36 6.1 3.7
# 2  1990-12-07 10:36 6.9 3.7
# 3  1990-12-07 11:36 6.9 3.7
# 4  1990-12-07 16:36 8.1 4.0
# 5  1990-12-07 18:36 7.0 3.9
# 6  1990-12-07 21:36 6.5 3.8
# 7  1990-12-07 22:36 6.4 3.8
# 8  1990-13-07 06:36 5.4 3.7
# 9  1990-13-07 13:36 5.3 4.2
# 10 1990-13-07 14:36 5.2 4.6
# 11 1990-13-07 15:36 5.0 4.2
# 12 1990-13-07 16:36 5.1 4.2