R:读取csv数字,带逗号,十进制

R:读取csv数字,带逗号,十进制,r,apache-spark,sparklyr,R,Apache Spark,Sparklyr,我需要使用“SparkyR”库读取“.csv”类型的文件,其中的数值用逗号显示。其思想是能够直接使用“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 <- s

我需要使用“SparkyR”库读取“.csv”类型的文件,其中的数值用逗号显示。其思想是能够直接使用“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)
库(年)
图书馆(dplyr)
f您可以将数字中的“.”替换为“.”,并将其转换为数字。比如说

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

df$DD要操作spark df中的字符串,可以使用
regexp\u replace
函数,如下所述:

对于您的问题,其结果如下:

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)
tbl%
在(变量(c(“DD”,“CC”))处进行变异(如数字)
要检查结果,请执行以下操作:

> 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
>一瞥(tbl0)
观察结果:??
变量:3
$DNI“22-e”、“EE-4”、“55-W”
美元DD 33.20、33.20、14.55
$CC 2.0、44.4、44.9

如果你不想用“.”替换它,也许你可以试试这个

检查文档。使用转义参数指定要忽略的字符

在这种情况下,请尝试使用:

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

df您可能希望包含文件中的一些示例数据。请将这些数据添加到问题中,格式为可读代码。第一列是标识符,其他列是数值,其中逗号用十进制表示数字。dfI正在寻找类似R的csv2()函数,但SparkyRit是一个很好的策略,但目标是能够读取数据而不必在R中加载数据,而是直接使用SparkyR进行操作。在R中是read.csv2()命令,它允许用逗号读取十进制数字数据。这是可以理解的!!,您要做的是从第二个“df”加载它,它使用spark\u read\u csv()出色的贡献!