Как избежать значений 'NA' при приведении столбца .tsv к числовому значению с помощью as.numeric? - PullRequest
0 голосов
/ 06 июня 2019

У меня есть фрейм данных с несколькими столбцами из файла .tsv, и я хочу преобразовать один из них в числовой тип для анализа.Тем не менее, я все время получаю «NA», введенные предупреждением принуждения, и не знаю точно, почему.В начале другого столбца есть некоторая ненужная информация, которая является практически единственным форматированием, которое я сделал.

Первоначально я думал, что в файле могли быть добавлены дополнительные пробелы или пробелы, поэтому я попытался удалитьэто путем предоставления sub () в качестве аргумента.

Я должен также упомянуть, что я получаю ошибки NA также, когда я не заменяю значения и запускаю фрейм данных как:

library(tidyverse)

data_2018 <- read_tsv('teina230.tsv')
data_1995 <- read_csv('OECD_1995.csv')

#get rid of long colname & select only columns containing %GDP
clean_data_2018 <- data_2018 %>%
  select('na_item,sector,unit,geo','2018Q1','2018Q2','2018Q3','2018Q4') %>%
  rename(country = 'na_item,sector,unit,geo')
clean_data_2018 <- clean_data_2018[grep("PC_GDP", clean_data_2018$'country'), ]

#remove unnecessary info
clean_data_2018 <- clean_data_2018 %>%
  mutate(country=gsub('\\GD,S13,PC_GDP,','',country))
clean_data_2018 <- clean_data_2018 %>%
  mutate(
    '2018Q1'=as.numeric(sub("", "", '2018Q1', fixed = TRUE)),
    '2018Q2'=as.numeric(sub(" ", "", '2018Q2', fixed = TRUE)),
    '2018Q3'=as.numeric(sub(" ", "", '2018Q3', fixed = TRUE)),
    '2018Q4'=as.numeric(sub(" ", "", '2018Q4', fixed = TRUE))
    )

Есть ли другой способ обойти проблему и преобразовать столбец, не заменяя все значения на «NA»?

Спасибо, ребята:)

1 Ответ

0 голосов
/ 06 июня 2019

Спасибо за подсказку @divibisan!

Переименование столбцов с помощью rename () фактически решило проблему. Вот код, который окончательно сработал:

library(tidyverse)

data_2018 <- read_tsv('teina230.tsv')

#get rid of long colname & select only columns containing %GDP
clean_data_2018 <- data_2018 %>%
  select('na_item,sector,unit,geo','2018Q1','2018Q2','2018Q3','2018Q4') %>%
  rename(country = 'na_item,sector,unit,geo',
         quarter_1 = '2018Q1',
         quarter_2 = '2018Q2',
         quarter_3 = '2018Q3',
         quarter_4 = '2018Q4')
clean_data_2018 <- clean_data_2018[grep("PC_GDP", clean_data_2018$'country'), ]

#remove unnecessary info
clean_data_2018 <- clean_data_2018 %>%
  mutate(country=gsub('\\GD,S13,PC_GDP,','',country))
clean_data_2018 <- clean_data_2018 %>%
  mutate(
    quarter_1 = as.numeric(quarter_1),
    quarter_2 = as.numeric(quarter_2),
    quarter_3 = as.numeric(quarter_3),
    quarter_4 = as.numeric(quarter_4)
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...