使用 hive 命令更改 DF 中的字符串并使用 sparklyr 进行变异
change string in DF using hive command and mutate with sparklyr
使用 Hive 命令 regexp_extract
我正在尝试更改以下字符串:
201703170455 to 2017-03-17:04:55
来自:
2017031704555675 to 2017-03-17:04:55.0010
我在 sparklyr 中这样做,试图在 R 中使用与 gsub 一起工作的代码:
newdf<-df%>%mutate(Time1 = regexp_extract(Time, "(....)(..)(..)(..)(..)", "\1-\2-\3:\4:\5"))
和此代码:
newdf<-df%>mutate(TimeTrans = regexp_extract("(....)(..)(..)(..)(..)(....)", "\1-\2-\3:\4:\5.\6"))
但根本不起作用。关于如何使用 regexp_extract?
执行此操作的任何建议
Apache Spark 使用 Java 正则表达式方言而不是 R,组应该用 $
引用。此外 regexp_replace
用于 extract a single group by a numeric index.
您可以使用 regexp_replace
:
df <- data.frame(time = c("201703170455", "2017031704555675"))
sdf <- copy_to(sc, df)
sdf %>%
mutate(time1 = regexp_replace(
time, "^(....)(..)(..)(..)(..)$", "-- :" )) %>%
mutate(time2 = regexp_replace(
time, "^(....)(..)(..)(..)(..)(....)$", "-- :."))
Source: query [2 x 3]
Database: spark connection master=local[8] app=sparklyr local=TRUE
# A tibble: 2 x 3
time time1 time2
<chr> <chr> <chr>
1 201703170455 2017-03-17 04:55 201703170455
2 2017031704555675 2017031704555675 2017-03-17 04:55.5675
使用 Hive 命令 regexp_extract
我正在尝试更改以下字符串:
201703170455 to 2017-03-17:04:55
来自:
2017031704555675 to 2017-03-17:04:55.0010
我在 sparklyr 中这样做,试图在 R 中使用与 gsub 一起工作的代码:
newdf<-df%>%mutate(Time1 = regexp_extract(Time, "(....)(..)(..)(..)(..)", "\1-\2-\3:\4:\5"))
和此代码:
newdf<-df%>mutate(TimeTrans = regexp_extract("(....)(..)(..)(..)(..)(....)", "\1-\2-\3:\4:\5.\6"))
但根本不起作用。关于如何使用 regexp_extract?
执行此操作的任何建议Apache Spark 使用 Java 正则表达式方言而不是 R,组应该用 $
引用。此外 regexp_replace
用于 extract a single group by a numeric index.
您可以使用 regexp_replace
:
df <- data.frame(time = c("201703170455", "2017031704555675"))
sdf <- copy_to(sc, df)
sdf %>%
mutate(time1 = regexp_replace(
time, "^(....)(..)(..)(..)(..)$", "-- :" )) %>%
mutate(time2 = regexp_replace(
time, "^(....)(..)(..)(..)(..)(....)$", "-- :."))
Source: query [2 x 3]
Database: spark connection master=local[8] app=sparklyr local=TRUE
# A tibble: 2 x 3
time time1 time2
<chr> <chr> <chr>
1 201703170455 2017-03-17 04:55 201703170455
2 2017031704555675 2017031704555675 2017-03-17 04:55.5675