【问题标题】:How to convert character with comma into numbers in Sparklyr?如何在 Sparklyr 中将带逗号的字符转换为数字?
【发布时间】:2019-07-16 15:58:28
【问题描述】:

我使用 spark_read_csv 将原始数据读入 Spark 但一个字段是字符?

“110,000.00”

我想将其转换为数字,因为它表示美元金额,但很难正确解码?有办法吗?

【问题讨论】:

  • 在 R 中,使用 as.integer(gsub("\\D", "", x)) 会相当简单,但它是如何读入或可用的,你不能使用它吗?
  • 阅读文件时尝试quote = FALSE
  • 一杜,如果有一个答案解决了您的问题,请accept it;这样做不仅为回答者提供了一些积分,而且还为有类似问题的读者提供了一些关闭。尽管您只能接受一个答案,但您可以选择对您认为有帮助的人进行投票。 (如果仍有问题,您可能需要编辑您的问题并提供更多详细信息。)(也请考虑为your other questions with answers 这样做。)

标签: r dplyr sparklyr


【解决方案1】:

sparklyr 使用“HIVE”语法 check here,这些 Hive 函数中的任何一个都应该在 dplyr 动词中工作,因此为了执行这个特定的字符串转换,您需要使用类似 REGEXP_REPLACE 的东西

这是您问题的答案,我包含了详细信息,所以一切都很清楚

my_test_df = data.frame(char_val = "110,000.00")

my_test_spark = my_test_df %>%  copy_to(sc, ., 'my_test_df_spark' )

my_test_spark 

# Source: spark<my_test_df_spark> [?? x 1]
#  char_val  
#  <chr>     
#  1 110,000.00

my_test_spark %>%  
  mutate(my_new_char = regexp_replace(char_val, ',','')) %>%  
  mutate(my_numeric = as.numeric(my_new_char)) %>% 
  head 


# # Source: spark<?> [?? x 3]
# char_val   my_new_char my_numeric
# * <chr>      <chr>            <dbl>
# 1 110,000.00 110000.00       110000

【讨论】:

    【解决方案2】:

    一种可能的方法是使用stringr 包删除逗号,然后将字符串转换为数字。

    library(stringr)
    numbers <- c("100,000.00", "200,000.00")
    numbers <- str_replace_all(numbers, ",", "")
    numbers <- as.numeric(numbers)
    

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      相关资源
      最近更新 更多