r - 使用 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))
推荐阅读
- python - 用正则表达式替换python文件内容和行首问题
- sql - SQL HTTP 函数或过程
- openapi - 当字段应该是 IRI 或常规字符串时区分 OpenApi 文档
- android - Android Studio 应用程序通知权限默认关闭?
- android - 在 LinearLayout 中自动计算边距
- python - 对整数进行条件检查时出错
- python - 如何在 python 中使用 presignedurl 将用户(csv)导入 AWS cognito
- java - “NoSuchMethodError”是什么意思?
- c# - C# wpf dataGrid Items.Add 不改变在 backgroundWorker 上运行的数据值
- python - 如何更正以下错误'AttributeError:'dict_keys'对象没有属性'remove''?