2014-02-14 30 views
0

这就是我想要做的:R如何格式化日期列表中的元素

首先,我随机生成一个日期序列。 然后,我将最早的日期分配给变量。

site_start<-list() 
    for(i in 1:l0){ 
    for(j in 1:10){ 
     date<-seq.Date(from="1900-01-01",to="2000-01-01",by=week) 
     site_start[[i]][j]<-sample(date,1) 
    } 
    } 

现在让我们假设日期变量是正确生成的。我之所以这样说,是因为在我的真实情况下,我从其他几十个步骤中获得了日期变量,这在这里是无关紧要的。

我的问题是,为什么我生成的site_start [[i]] [j]继续作为POSIXct出现,R需要我提供'origin'?我将它的格式设置为1970-01-01的原点,它仍然是数字日期,例如15600.我根本不知道如何格式化此号码。

任何帮助表示赞赏!

W¯¯

回答

0

你为什么不使用这种方法矢量:

date.pool <- seq(from=as.Date("1900-01-01"), to=as.Date("2000-01-01"), by="1 week") 
site_start <- replicate(10, sample(date.pool, 10, rep=T), simplify=F) 

这就产生了10项,其中的每一个是从date.pool拉随机日期的10长度矢量列表。这是前两个项目(site_start[1:2]):

[[1]] 
[1] "1969-09-15" "1955-10-10" "1959-04-13" "1992-02-10" "1905-07-31" "1901-09-23" 
[7] "1926-10-18" "1959-06-01" "1924-06-02" "1906-05-14" 

[[2]] 
[1] "1979-01-01" "1998-02-23" "1929-09-02" "1968-07-01" "1924-03-17" "1914-11-02" 
[7] "1928-02-13" "1937-10-25" "1915-02-08" "1974-05-06" 
+0

一个小的更正:'sample.()',而不是'date'内的'date.pool'。 – Rcoster

+0

@Rcoster,谢谢。还有另一个原因,为什么一个人应该在做任何事情之前清理他们的工作空间...... – BrodieG

+0

@Rcoster,我试图使用replicate(),但现在,我需要将min(日期)放入site_start [[g]] [h]。日期是许多日期的数组对象。它不是将POSXIct放入列表的元素中,而是“复制”任何东西,除了零之外。你知道如何在列表中添加一个日期吗? – Weijia

0

在过去,当我不得不抢我将使用安排上最古老和最近期的条目。例如,

# read dataset 
enforce <- read.csv(paste(input.dir, "provider_enforcement.csv", sep="/")) 

# use lubridate package to parse date format 
enforce$SNAPSHOT_DATE <- mdy_hm(enforce$SNAPSHOT_DATE) 

# this function sorts a data.frame and returns a data.frame with one row containing the most recent SNAPSHOT 
MostRecent <- function(data) { 
    return(arrange(data, SNAPSHOT_DATE, decreasing=TRUE)[1, ]) 
} 

# use plyr to apply MostRecent to my dataset for each provider 
enforce <- ddply(enforce, .(PROVIDER_IDNO), MostRecent)