我通过用NA值填充数据来创建数据框
date_base <- rep(NA, df_length)
x <- rep(NA, df_length)
y <- rep(NA, df_length)
df1 <- data.frame(date_base,x,y)
然后我循环浏览一些数据并单独填充每一行(因此需要预先填充data.frame。是的,我可以使用rbind,但我认为这样会更容易)。
第一列包含格式为'yyyy-mm-dd'
的日期。这些是从数据库中提取的另一个data.frame 'in_data'
获得的。我确保它们是使用as.Date函数的日期。
in_data$date_base <- as.Date(as.character(in_data$date_base),"%Y-%m-%d")
对于我简单设置的每一行:
df1$date_base <- end_date
其中end_date是in_data$date_base
的值。我检查了end_date
的数据类型,它是Date[1]
但是,一旦填充,我会检查df1$date_base
,它们是日期的数字表示:14487, 14517, 14548
而不是2009-08-31, 2009-09-30, 2009-10-31
如果不使用NA创建data.frame,而是使用以下日期预填充:
date_base <- rep(as.Date(as.character('1970-01-01'),"%Y-%m-%d"), length(unique_dates) * versions_len)
然后df1中的结果日期在df1中保持'yyyy-mm-dd'
格式。
为什么使用NULL
值填充数据框会产生这种影响?这是预先填充data.frame的不良做法吗?如果是,最佳做法是什么?
感谢您的帮助。
答案 0 :(得分:1)
我认为这可能就像第一列最初的日期一样简单如下:
date_base <- as.Date(rep(NA, df_length))
当您将其设置为NA时,默认情况下会将其设置为logical
类型,而不是Date
。以下是上一个问题的链接,该问题更详细地描述了这一点:NA in data.table