r - 使用 dplyr 包 R 改变 data.frame 或 tibble 中的选定列

标签 r dataframe dplyr

我想一次将 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)))

最佳答案

我们可以使用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)

关于r - 使用 dplyr 包 R 改变 data.frame 或 tibble 中的选定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595313/

相关文章:

r - 绘图标签中的表达式和新行

r - 从 Rstudio 控制台打开(不运行)并编辑 R 脚本

python - 将 pandas 数据框列拆分为多个 bool 列

Python:pandas dataframe插值实现等距时间数据点

R dplyr : change the row value of columns having an specific name

R 根据以前的列改变新列并动态命名它们

R - 根据第二个数据框中的最接近匹配分配列值

r - 如何拆分 data.frame 列表并将函数应用于一列?

python - Pandas 合并并保留索引

r - 使用 R 处理数据