代码之家  ›  专栏  ›  技术社区  ›  spindoctor

在csv文件中忽略逗号作为千位分隔符

  •  0
  • spindoctor  · 技术社区  · 5 年前

    我有一些数据集有多行,如data.frae df 下面。

    最后,我真的需要字符串最末尾的整数,在双引号之外的逗号后面。但是逗号作为千位分隔符似乎真的使事情复杂化了。

    为每个计数保存行标签(即$5000-$9999)是很有用的,但是如果没有它,我可以这样做。

    下面的代码返回同一列中的行标签和计数。

    谢谢

    library(tidyverse)
    text<-'"Text / some other text / some other text / $5,000-$9,999", 10,000.00'
    df<-data.frame(text=text)
    df %>% 
      separate(., text, into=c('a', 'b', 'c', 'd'), sep='/')
    
    2 回复  |  直到 5 年前
        1
  •  0
  •   A. S. K.    5 年前

    等一下怎么样 separate 像这样吗?

    df %>% 
      separate(., text, into=c('a', 'b', 'c', 'd'), sep='/') %>%
      separate(d, into = c("d", "e"), sep = "\", ")
    
        2
  •  0
  •   Mouad_Seridi    5 年前

    您可以通过使用R base的正则表达式功能来完成您的任务。

    library(tidyr)
    text<-'"Text / some other text / some other text / $5,000-$9,999", 10,000.00'
    df<-data.frame(text=text)
    df %>% mutate(my_number = unlist(regmatches(text, gregexpr( ' [0-9](.*)$' ,text)))) %>%  
           mutate(my_number = as.integer(sub(',','', my_number))) %>%  
      head 
    
    
    text   my_number
    1 "Text / some other text / some other text / $5,000-$9,999", 10,000.00     
    10000