gpt4 book ai didi

如果列中没有日期,则 read.xlsx 读取日期错误

转载 作者:行者123 更新时间:2023-12-01 18:01:55 25 4
gpt4 key购买 nike

xlsx 包错误地读取了日期。我在这里阅读了所有 HitTest 门的类似问题,并在互联网上进行了侦察,但我找不到这种特定行为,即如果列中存在非日期数据,则原点会发生变化。

我有一个很小的 ​​Excel 电子表格,您可以从 Dropbox 获取:

https://www.dropbox.com/s/872q9mzb5uzukws/test.xlsx

它有三行,两列。第一个是日期,第二个是数字。第三行的日期列中有“总计”。

如果我用 read.xlsx 读取前两行并告诉它第一列是日期,那么这是有效的:

read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("Date","integer"),endRow=2)
X1 X2
1 2014-06-29 49
2 2014-06-30 46

这些确实是电子表格中的日期。如果我尝试读取所有三行,就会出现问题:

read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("Date","integer"))
X1 X2
1 2084-06-30 49
2 2084-07-01 46
3 <NA> 89251
Warning message:
In as.POSIXlt.Date(x) : NAs introduced by coercion

如果我尝试读入整数,我会得到不同的整数:

> read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("integer","integer"),endRow=2)
X1 X2
1 16250 49
2 16251 46
> read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("integer","integer"))
X1 X2
1 41819 49
2 41820 46
3 NA 89251

第一个整数使用 as.Date(s1$X1,origin="1970-01-01") (Unix 纪元)正确转换,第二个整数使用 正确转换as.Date(s2$X1, origin="1899-12-30") (Excel 纪元)。如果我使用 1970 年转换第二批,我会得到 2084 年日期。

所以:我做错了什么吗?最好以整数形式读取,如果有任何 NA,则使用 E​​xcel 纪元进行转换,否则使用 Unix 纪元?或者是 xlsx 包中的错误?

xlsx版本是版本:0.5.1

最佳答案

日期可以读取为整数,然后使用 openxlsx::convertToDate() 函数转换为日期。

更多 here

关于如果列中没有日期,则 read.xlsx 读取日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25158969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com