【发布时间】:2020-09-28 19:32:34
【问题描述】:
如果已经在其他地方问过这个问题,请提前道歉,但我尝试了不同的尝试,但到目前为止没有任何效果。
我希望使用以下方法打开一个大 Excel 文件(> 21000 行):
myData <- read.xlsx("....xlsx", sheet = 1, colNames = TRUE)
我有两列日期需要转换为“01-01-2019”格式而不是“43000”格式。因此我使用:
myData$Begin.Date <- convertToDate(myData$Begin.Date)
myData$End.Date <- convertToDate(myData$End.Date)
然后,我在 Excel 文件中也有两列时间(小时:分钟,范围从 00:00 到 23:59)。但是,当我在 R 中读取 Excel 文件时,所有小时都转换为从 0 到 0,99 的值。如何转换这两个列以保持“小时:分钟”格式?如果我使用 convertToDate 函数,现在显示为 0 的值 00:00 将转换为“1899-12-30”
myData$Begin.Time <- ??(myData$Begin.Time)
myData$End.Time <- ??(myData$End.Time)
这是我到目前为止所获得的:
> myData <- read.xlsx("....xlsx", sheet = 1, colNames = TRUE)
> myData$Begin.Date <- with(myData, convertToDateTime(Begin.Date))
> myData$End.Date <- with(myData, convertToDateTime(End.Date))
> myData$Begin.Time <- with(myData, convertToDateTime(Begin.Time))
> myData$End.Time <- with(myData, convertToDateTime(End.Time))
> head(myData, 2)
xxxxx yyyyy zzzzz aaaaa bbbbb nnnnnn qqqqq ssssss
1 xxx yyy zzz aaa yyyyyy tttttt B rrr
2 xxx yyy zzz aaa yyyyyy tttttt B rrr
kkkkkk mmmmmm ooooo Begin.Date Begin.Time End.Date End.Time
1 u yyy y 2019-01-01 1899-12-30 2019-01-29 1899-12-30
2 u yyy y 2019-01-01 1899-12-30 2019-01-29 1899-12-30
dput(head(myData,3))
structure(list(Sample_ID = c("...", "...", "..."), Locality.Name = c("...", "...", "..."), Code = c("...", "...", "..."), Catchment = c("...",
"...", "..."), Decimal.Latitude = c(..., ..., ...), Decimal.Longitude = c(..., ..., ...), Sample.type = c("...",
"...", "..."), Sample.Treatment = c(".", ".", "."), Chemicals = c("...", "...", "..."), Apparatus.Type = c(".", ".", "."),
Begin.Date = c(43466, 43466, 43466), Begin.Time = c(0, 0, 0), End.Date = c(43494, 43494, 43494), End.Time = c(0, 0, 0), Value = c(..., ..., .), Value.Type = c("A", "A", "A"), Measuring.Unit = c("...", "...", "..."), Uncertainty.Value = c(..., .., ..), Uncertainty.Type = c(".", ".","."), Uncertainty.Unit = c("...", "...", "..."), Laboratory = c("...", "...", "..."), class = "data.frame")
【问题讨论】:
-
每个
r标签(悬停或点击查看):请提供最小和reproducible example(s) 以及所需的输出。对数据使用dput(),并使用library()调用指定所有非基础包。 -
好的。看看我对我的问题的编辑:)
-
输入数据的一个例子会很有帮助:dput(head(myData,3))
-
查看我对问题的编辑
-
我下面的回答是否没有解决这个建议使用
convertToDateTime的问题?剩下的问题是什么?请记住,R 本身没有Time类型(与Date不同)。