簡體   English   中英

R:用十進制逗號讀取csv數字,包sparklyr

[英]R :Read csv numeric with comma in decimal, package sparklyr

我需要使用庫“ sparklyr”讀取類型為“ .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)

問題所在,將數字視為因素

要在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

您可以將數字中的“,”替換為“。”。 並將它們轉換為數字。 例如

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

有幫助嗎?

如果您不想將其替換為“。” 也許您可以嘗試一下。

spark_read_csv

檢查文檔。 使用轉義參數可以指定要忽略的字符。

在這種情況下,請嘗試使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM