首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中使用POSIXlt

如何在R中使用POSIXlt
EN

Stack Overflow用户
提问于 2016-11-14 06:50:06
回答 1查看 251关注 0票数 0

我正在尝试对已加载到R中的csv文件进行一些分析。我正在执行以下操作以通过test[3][1]访问特定值,例如获取特定值:

代码语言:javascript
复制
test <- read.csv(file = "test.csv")
test <- data.frame(lapply(test, as.character), stringsAsFactors=FALSE)

否则我会得到这样的东西:

代码语言:javascript
复制
> chicago[[3]][[1]]
[1] 08/02/2002 11:00:00 AM
19747 Levels: 01/01/2001 03:49:00 AM 01/01/2001 06:17:00 PM 01/01/2001 12:00:00 AM ... 12/31/2015 11:46:00 AM

因为有一列保存日期,所以我将其转换为POSIXlt。

代码语言:javascript
复制
test[[3]] <- strptime(test[[3]], format='%m/%d/%Y %I:%M:%S %p') 

现在可以按预期更改这些值,例如:

代码语言:javascript
复制
01/28/2004 06:30:00 PM -> 2004-01-28 18:30:00

现在尝试访问这些值,我意识到例如test[3][1]并没有给出具体的日期-相反,我得到了一个包含每一行的每一秒的列表。

测试了一下,我发现POSIXit类型有点“不同”;这意味着上面提到的值似乎是某种列表,如下所示:

代码语言:javascript
复制
> unlist(unclass(value))
   sec    min   hour   mday    mon   year   wday   yday  isdst   zone gmtoff 
   "0"    "0"   "11"    "2"    "7"  "102"    "5"  "213"    "1" "CEST"     NA 

所以我的问题是:有没有一种方法可以得到像"2004-01-28 18:30:00“这样的值,而不是整个列的列表?

EN

回答 1

Stack Overflow用户

发布于 2016-11-14 06:55:27

你让你的生活变得太困难了。可以解析为整个列的Date或Datetime。不需要lapply

您(通常)不需要POSIXlt表示。查看现有的包,比如我的(相对较新的) anytime包(也是on CRAN),它甚至可以为您从factor进行转换,并且不需要显式的格式字符串、原始值或其他等待。

但是,由于您的帖子中没有包含reproducible example,因此我无法提供更具体的步骤。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40579696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档