игнорирование запятых в качестве разделителей тысяч в CSV-файлах - PullRequest
0 голосов
/ 21 января 2019

У меня есть несколько наборов данных, которые имеют несколько строк, как в 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 ]

0 голосов
/ 21 января 2019

Вы можете выполнить свою задачу, используя возможности регулярных выражений 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
0 голосов
/ 21 января 2019

Как насчет секунды separate, вот так?

df %>% 
  separate(., text, into=c('a', 'b', 'c', 'd'), sep='/') %>%
  separate(d, into = c("d", "e"), sep = "\", ")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...