R: чтение CSV числовых с запятой в десятичном формате, пакет sparklyr - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужно прочитать файл типа «.csv», используя библиотеку «sparklyr», в которой числовые значения отображаются с запятыми.Идея состоит в том, чтобы иметь возможность читать, используя «spark_read_csv ()» напрямую.

Я использую:

library(sparklyr)
library(dplyr)

f<-data.frame(DNI=c("22-e","EE-4","55-W"), 
DD=c("33,2","33.2","14,55"),CC=c("2","44,4","44,9")) 

write.csv(f,"aff.csv")

sc <- spark_connect(master = "local", spark_home = "/home/tomas/spark-2.1.0-bin-hadoop2.7/", version = "2.1.0")

df <- spark_read_csv(sc, name = "data", path = "/home/tomas/Documentos/Clusterapp/aff.csv", header = TRUE, delimiter = ",")

tbl <- sdf_copy_to(sc = sc, x =df , overwrite = T)

Проблема, считайте числа как фактор

Ответы [ 3 ]

0 голосов
/ 30 декабря 2018

Чтобы манипулировать строкой внутри spark df, вы можете использовать функцию regexp_replace, как упомянуто здесь:

https://spark.rstudio.com/guides/textmining/

Для вашей проблемы это сработает так:

tbl <- sdf_copy_to(sc = sc, x =df, overwrite = T)

tbl0<-tbl%>%
    mutate(DD=regexp_replace(DD,",","."),CC=regexp_replace(CC,",","."))%>%
    mutate_at(vars(c("DD","CC")),as.numeric)

чтобы проверить ваш результат:

> glimpse(tbl0)
Observations: ??
Variables: 3
$ DNI <chr> "22-e", "EE-4", "55-W"
$ DD  <dbl> 33.20, 33.20, 14.55
$ CC  <dbl> 2.0, 44.4, 44.9
0 голосов
/ 03 января 2019

Если вы не хотите заменить его на '.'Может быть, вы можете попробовать это.

spark_read_csv

Проверьте документацию.Используйте параметр escape , чтобы указать, какой символ вы пытаетесь игнорировать.

В этом случае попробуйте использовать:

df <- spark_read_csv(sc, name = "data", path = "/home/tomas/Documentos/Clusterapp/aff.csv", header = TRUE, delimiter = ",", escape = "\,").
0 голосов
/ 28 декабря 2018

Вы можете заменить "," в числах на "."и преобразовать их в числовые.Например,

df$DD<-as.numeric(gsub(pattern = ",",replacement = ".",x = df$DD))

Помогает ли это?

...