使用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 函数一起工作,但我不知道如何去做。
如果我能就此获得一些建议,我将不胜感激。
回答
这将是更好地做到这一点type.convert从base R它基于每一列中的值自动修正型
df1 <- type.convert(df, as.is = TRUE)
在 中dplyr,可以across使用数字索引来完成并指定列的范围
df %>%
mutate(across(2:4, as.numeric))
或列名范围
df %>%
mutate(across(X11:P3, as.numeric))