首页 > 解决方案 > 使用 dplyr 在 R 中将多列转换为双精度类型

问题描述

我有一个数据框,其中有很多包含字符串格式的十进制值的列,我正在尝试找到一种方法将所有包含数值的列转换为双精度类型。例如,通过指定要转换的列范围,在这种情况下为 df[2:4]。

由此:

df <- data_frame(cat = c('A', 'B', 'C'), 
             X11 = c('0.1', '0.3', '0.5'), 
             Y2 = c('0.2', '0.2', '0.7'), 
             P3 = c('0.14', '0.31', '0.35'),
             type = c('H', 'I', 'J'))

对此:

df <- data_frame(cat = c('A', 'B', 'C'), 
             X11 = c(0.1, 0.3, 0.5), 
             Y2 = c(0.2, 0.2, 0.7), 
             P3 = c(0.14, 0.31, 0.35),
             type = c('H', 'I', 'J'))

我一直试图让它与不同的 dplyr mutate 函数一起工作,但我不知道该怎么做。

如果我能就此获得一些建议,我将不胜感激。

标签: rdplyr

解决方案


最好这样做,根据每列中type.convertbase R值自动更正类型

df1 <- type.convert(df, as.is = TRUE)

dplyr中,可以across使用任一数字索引来完成并指定列的范围

df %>%
   mutate(across(2:4, as.numeric))

或列名范围

df %>%
   mutate(across(X11:P3, as.numeric))

推荐阅读