我已经将一张表带入了 Hue,它有一列日期,我正在尝试在 Rstudio 中使用 sparklyr 来玩它。
我想将字符列转换为日期列,如下所示:
Weather_data = mutate(Weather_data, date2 = as.Date(date, "%m/%d/%Y"))
这运行良好,但是当我检查时:head(Weather_data)
如何正确地将 chr 转换为日期?
谢谢!!!!
最佳答案
问题是sparklyr
不正确支持 Spark DateType
.可以解析日期和正确格式,但不能将它们表示为正确的 DateType
列。如果这足够了,请按照以下说明进行操作。
在 Spark 2.2 或更高版本中使用 to_date
使用 Java SimpleDataFormat
兼容字符串:
df <- copy_to(sc, data.frame(date=c("01/01/2010")))
parsed <- df %>% mutate(date_parsed = to_date(date, "MM/dd/yyyy"))
parsed
# Source: lazy query [?? x 2]
# Database: spark_connection
date date_parsed
<chr> <chr>
1 01/15/2010 2010-01-15
有趣的是内部 Spark 对象仍然使用
DateType
列:parsed %>% spark_dataframe
<jobj[120]>
class org.apache.spark.sql.Dataset
[date: string, date_parsed: date]
对于早期版本
unix_timestamp
和 cast
(但注意可能的时区问题):df %>%
mutate(date_parsed = sql(
"CAST(CAST(unix_timestamp(date, 'MM/dd/yyyy') AS timestamp) AS date)"))
# Source: lazy query [?? x 2]
# Database: spark_connection
date date_parsed
<chr> <chr>
1 01/15/2010 2010-01-15
编辑 :
看起来这个问题已经在当前的 master (
sparklyr_0.7.0-9105
) 上解决了:# Source: lazy query [?? x 2]
# Database: spark_connection
date date_parsed
<chr> <date>
1 01/01/2010 2009-12-31
关于r - 使用 sparklyr 将字符串/字符转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453646/