Преобразование данных (один столбец) с помощью Tidyverse - PullRequest
1 голос
/ 08 мая 2019

У меня есть таблица с именем DATA_TEST. Эта таблица содержит один столбец с семью различными случаями данных.

enter image description here

#DATA
DATA_TEST<-data.frame(
         CUSTOMS_RATE=c("10","20.1","15+0,41 eur/kg","10+0,1 eur/kg 
         max.17","0,1 eur/l max.17","0,04                  eur/kg 
         max.10","NA"))
View(DATA_TEST)

Таким образом, я намерен разделить этот столбец на три различных столбца, чтобы продолжить выполнение других статистических операций (вычисление средних значений и т. Д.), Таких как таблица (DATA_TEST1) ниже.

enter image description here

Благодаря этому сообществу я получил этот код. Но есть некоторая ошибка, потому что вторая запись "20.1" вместо того, чтобы оставаться в столбце RATE, он переходит к следующей или точно в столбце SPECIFIC_RATE.

library(tidyverse)
DATA_TEST %>%
  mutate(CUSTOMS_RATE = str_replace_all(CUSTOMS_RATE, ",", "."),
         RATE = str_extract(CUSTOMS_RATE, "^[0-9]+(?=\\+|$)"), 
         SPECIFIC_RATE = str_extract(CUSTOMS_RATE, "\\d+\\.\\d+"), 
         MAXIMUM_RATE = str_extract(CUSTOMS_RATE, "(?<=max\\.)\\d+")) %>% 
  select(2:4) %>%
  mutate_all(as.numeric)

Так кто-нибудь может мне помочь, как решить эту проблему?

1 Ответ

1 голос
/ 08 мая 2019

Один из вариантов - изменить код в RATE на

RATE = str_extract(CUSTOMS_RATE, "^[0-9]+(?=\\+|$)|^[0-9.]+$")

-fullcode

DATA_TEST %>%
  mutate(CUSTOMS_RATE = str_replace_all(CUSTOMS_RATE, ",", "."), 
  RATE = str_extract(CUSTOMS_RATE, "^[0-9]+(?=\\+|$)|^[0-9.]+$"), 
  SPECIFIC_RATE = str_extract(CUSTOMS_RATE, "\\d+\\.\\d+(?=\\s)"), 
  MAXIMUM_RATE = str_extract(CUSTOMS_RATE, "(?<=max\\.)\\d+")) %>% 
  select(2:4) %>% 
  mutate_all(as.numeric)
# RATE SPECIFIC_RATE MAXIMUM_RATE
#1 10.0            NA           NA
#2 20.1            NA          NA
#3 15.0          0.41           NA
#4 10.0          0.10           17
#5   NA          0.10           17
#6   NA          0.04           10
#7   NA            NA           NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...