Мутирование выбранных столбцов в data.frame или tibble с помощью пакета dplyr R - PullRequest
0 голосов
/ 01 октября 2018

Я хотел бы применить функцию mutate к нескольким столбцам одновременно.Столбцы начинаются с определенной строки символов, и именно так они должны быть определены.Я хотел бы также знать решение, как применить его к столбцам, помеченным индексацией т.е.data_fake[3:4].Цель состоит в том, чтобы удалить все нечисловые символы и преобразовать значения в числовые.Не могу заставить это работать, к сожалению.Желаемый результат дается в конце кода.Большое спасибо.

data_fake <- data.frame(c("1","2","NA","3,","2","1 only"),c(1,2,3,4,5,6),
                        c("23","3 bundles","4","5","NA","1"), c("3","5 packs","6","78","7","8"))
colnames(data_fake) <- c("AB foo ab", "AB foo bc", "CD foo ab","CD foo bc")

data_fake <- as_tibble(data_fake)

data_fake %>%
        select(starts_with("CD foo")) %>% 
        mutate(as.numeric(gsub("[^0-9]", "")))

data_fake_results <- as_tibble(data.frame(c("1","2","NA","3,","2","1 only"),c(1,2,3,4,5,6),
                        c(23,3,4,5,NA,1), c(3,5,6,78,7,8)))

1 Ответ

0 голосов
/ 01 октября 2018

Мы можем использовать mutate_at

library(tidyverse)
data_fake %>%
    mutate_at(vars(3:4), funs(as.numeric(str_remove(., "\\s+[a-z]+"))))

Или использовать parse_number

data_fake %>%
     mutate_at(3:4, parse_number)

Если мы хотим сопоставить имена столбцов в mutate_at

data_fake %>% 
    mutate_at(vars(starts_with("CD")), parse_number)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...