今天的第二个问题,也是我最后一次尝试使用 R 来清理这个数据。以下是情况说明:
我有一个数据框,其中包含一个 POSIXlt 日期类型的列。我想从该列中提取日、月和年,并创建三个名为(巧妙地)day、month 和 year 的新列。
数据框如下:
order_id dd_mmm_yy
1 2005-07-28
2 2007-03-04
我希望你能翻译这个:
order_id dd_mmm_yy day month year
1 2005-07-28 28 7 2005
2 2007-03-04 4 3 2007
我已经创建了一个函数来提取日期、月份和年份,并以列表(或数据框,我尝试过两种方法)的形式返回它们。
extractdate = function (date) {
day = format(date, format="%d")
month = format(date, format="%m")
year = format(date, format="%Y")
list(day=day, month=month, year=year)
}
根据之前的问题和提问,我尝试了以下方法:
cbind(orders, t(sapply(orders$dd_mmm_yy, extractdate)))
这给了我这个:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 5, 9
t(sapply... 单独使用,由于某些原因,它会给我返回如下结果:
day month year
sec Character,5 Character,5 Character,5
min Character,5 Character,5 Character,5
hour Character,5 Character,5 Character,5
mday Character,5 Character,5 Character,5
mon Character,5 Character,5 Character,5
year Character,5 Character,5 Character,5
wday Character,5 Character,5 Character,5
yday Character,5 Character,5 Character,5
isdst Character,5 Character,5 Character,5
到底发生了什么?在将数据带入R进行分析之前,我是否最好使用类似Python或Java的工具来处理所有需要进行的数据操作?