如何使用dplyr将数据框指定列格式转换为数值型
使用dplyr批量将指定列转为数值型
针对批量转换多列为数值型的需求,用dplyr可以简洁实现,以下是两种常用方案:
方案一:dplyr 1.0.0+ 推荐写法(使用across())
新版dplyr推荐用across()对多列执行统一操作,结合你定义的列名向量,代码如下:
library(dplyr) cols.to.format <- c("quantity", "li_hep", "edta") # 批量转换指定列 df <- df %>% mutate(across(all_of(cols.to.format), as.numeric))
all_of()用来精准匹配你指定的列名,若要忽略不存在的列,可替换为any_of()as.numeric就是执行转换的核心函数
方案二:旧版dplyr兼容写法(使用mutate_at())
如果你的dplyr版本低于1.0.0,可用mutate_at()实现:
df <- df %>% mutate_at(vars(cols.to.format), as.numeric)
验证转换结果
执行后用str(df)查看数据结构,能看到指定列已转为数值型:
str(df) # 输出示例: # tibble [5 × 5] (S3: tbl_df/tbl/data.frame) # $ source : chr [1:5] "Biobank" "Biobank" "Biobank" "Biobank" ... # $ sample_type : chr [1:5] "EDTA Plasma Large Aliquot" "EDTA Plasma Large Aliquot" ... # $ quantity : num [1:5] 10 3 8 0 7 # $ li_hep : num [1:5] 0 0 0 0 0 # $ edta : num [1:5] 2 2 0 0 0
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

