这是一个简单的例子。我有一个包含三个日期的数据框:
Data <- as.data.frame(as.Date(c('1970/01/01', '1970/01/02', '1970/01/03')))
names(Data) <- "date"
现在我添加一个包含相同条目的列:
for(i in 1:3){
Data[i, "date2"] <- Data[i, "date"]
}
输出如下所示:
date date2
1 1970-01-01 0
2 1970-01-02 1
3 1970-01-03 2
由于未知原因,列 date2 的类别是数字,而不是日期类别的 date。奇怪的是,如果您明确告诉 R 使用日期格式:
for(i in 1:3){
Data[i, "date3"] <- as.Date(Data[i, "date"])
}
它没有任何区别。
date date2 date3
1 1970-01-01 0 0
2 1970-01-02 1 1
3 1970-01-03 2 2
问题似乎在于子集 [] 的使用,在更有趣的示例中,您有两列日期并希望创建第三列,该第三列根据某些因素从其他两列之一中选择日期。
当然,我们可以通过执行以下操作来解决所有问题:
Data$date4 <- as.Date(Data$date2, origin = "1970-01-01")
但我仍然想知道:为什么?为什么会这样?为什么我的日期在转移到另一列时不能只保留日期?