【发布时间】:2014-01-04 21:56:18
【问题描述】:
我正在处理包含日期的数据并且遇到了一些麻烦。本质上,我希望根据两个现有日期和另一个变量为我的数据框中的所有行计算一个新日期。例如,我希望能够从 Date1 中减去 10 天,或者计算 Date1 和 Date2 之间的日期等。但是,在将新的计算日期添加到数据框时,我无法理解类分配。示例数据框:
# Uncomment to clear your session...
# rm(list = ls(all = TRUE))
tC <- textConnection("StudyID Date1 Date2
C0031 2-May-09 12-Jan-10
C0032 7-May-09 30-Apr-10")
data <- read.table(header=TRUE, tC)
close.connection(tC)
rm(tC)
#CONVERTING TO DATES
data$Date1 <- with(data,as.Date(Date1,format="%d-%b-%y"))
data$Date2 <- with(data,as.Date(Date2,format="%d-%b-%y"))
我的问题从这里开始
class(data[1, "Date2"] - 10) # class is "Date". So far so good.
data[1, "newdate"] <- (data[1, "Date2"] - 10)
class(data[1, "newdate"]) # class is now "numeric"...
尝试过
data[1, "newdate"] <- as.Date(data[1, "Date2"] - 10)
class(data[1, "newdate"]) # doesn't help. Class still "numeric"...
只是不明白为什么这个值在分配给数据时变成数字
【问题讨论】:
-
你试过
data$newdate <- data$Date1 - 10吗?我认为问题在于回收单个值。由于列必须具有相同的长度,因此您的奇异日期值将被回收以匹配 data.frame 中的行数。我假设(我会检查)回收条属性从而将日期转换为它们的数字形式。
标签: r time date-arithmetic