#r
#r
Вопрос:
Я очищаю фрейм данных для анализа в R. Один из столбцов содержит переменную «price», и он имеет символьный (chr) с символом $. Мне это нужно в числовом (dbl).
Ниже приведен код, который я получил. Когда я проверяю таблицу, строки заменяются на «N / A». Пожалуйста, дайте мне знать, что пошло не так, и если есть лучший код для этого. Спасибо!
rental_df <- rental_df %>%
mutate(location = sub(".*in ", "", location)) %>%
price_1 = mutate_at(price, as.numeric) %>%
clean_names()
Комментарии:
1. Я не знаю, что не так, но если вы используете mutate(price=as.numeric(price)), это должно сработать.
2. Вам нужно включить таблицу здесь
3. вы говорите, что это выглядит как «$ 19.99»? вам нужно вычесть $ перед принудительным преобразованием в числовой
4. ДА. Это выглядит как «$ 19.99». После того, как я изменяю, он показывает «N / A».
5. Как мне его заменить? Я попытался добавить => sub(«$», «», rental_df[«price»]) в мои каналы, но это не работает. Столбец цены является 9-м столбцом.
Ответ №1:
Вы можете использовать gsub
для замены знака доллара.
library(tidyverse)
set.seed(1)
rental_df <- tibble(
location = rep(c("A", "B", "C", "D", "E"), 200),
price = paste0("$", round(runif(1000, min = 2000, max = 4000)))
)
head(rental_df, 5)
#> # A tibble: 5 x 2
#> location price
#> <chr> <chr>
#> 1 A $2531
#> 2 B $2744
#> 3 C $3146
#> 4 D $3816
#> 5 E $2403
rental_df %>%
mutate(price = as.numeric(gsub("[$]", "", price))) %>%
head(. , 5)
#> # A tibble: 5 x 2
#> location price
#> <chr> <dbl>
#> 1 A 2531
#> 2 B 2744
#> 3 C 3146
#> 4 D 3816
#> 5 E 2403
sub
также может сработать, поскольку должен быть только один знак доллара, вероятно, вам просто не хватало квадратных скобок.
rental_df %>%
mutate(price = as.numeric(sub("[$]", "", price))) %>%
head(. , 5)
#> # A tibble: 5 x 2
#> location price
#> <chr> <dbl>
#> 1 A 2531
#> 2 B 2744
#> 3 C 3146
#> 4 D 3816
#> 5 E 2403
Я уверен, что вы проверили, но в качестве исключения убедитесь sub
, что при изменении выполняется то, что вы ожидаете location
. sub
заменяет первый экземпляр, одновременно gsub
заменяя все.
Создано 2021-12-03 пакетом reprex (v2.0.1)
Комментарии:
1. Это были квадратные скобки!!! Большое вам спасибо за то, что показали мне разные способы сделать это. Большое спасибо!!
2. @Hayley Это здорово, я рад, что это решило проблему! Не могли бы вы отметить это как ответ, чтобы все знали, что он разрешен. Я полагаю, что мы оба также получаем немного репутации.
3. @TraningPizza Понял! Еще раз спасибо за ваш подробный ответ.