Python-кодер здесь, но у меня есть некоторые шейп-файлы, которые мне нужно обработать в R с прикрепленными данными, которые мне нужно преобразовать из его текущего формата в обычные даты и времени, применяя простую функцию к столбцу с данными datetime.Это легко сделать в Python, но я продолжаю получать странные ошибки при использовании apply и lapply в R (подробности см. Ниже).Вероятно, ответ относительно прост, поскольку я гораздо менее знаком с R, чем с Python, поэтому любая помощь очень ценится.
R версия
# df is an R data.frame with 54 columns. The only one relevant for this
# question is df["ISSUE_DATE"], which is currently a list of 13-digit
# integers. I need to convert it to a regular datetime.
df$ISSUE_DATE[0:5]
[1] 20011001000000 20030228000000 19990910000000 20131108000000
[5] 19970930000000
fix_date = function(x){
string_x = toString(x)
datestr = substr(string_x, 0, 8)
result = as.Date(datestr, "%Y%m%d")
return(result)
}
df$fixed_dates = lapply(df$ISSUE_DATE, fix_date)
# This returns a column with the same value - fix_date(df$ISSUE_DATE[1])
# - in every row:
df$fixed_dates[0:5]
[1] "2001-10-01" "2001-10-01" "2001-10-01" "2001-10-01"
[5] "2001-10-01"
# What I want instead is the result of fix_date applied to each value in
# df$ISSUE_DATE as the values of df$fixed_dates:
df$fixed_dates[0:5]
[1] "2001-10-01" "2003-02-28" "1999-09-10" "2013-11-08"
[5] "1997-09-30"
Как это будет выглядеть в Python:
df["fixed_dates"] = df["ISSUE_DATE"].apply(fix_date)