r - 如何将数据框中的所有数字字符串转换为 R 中的数字?

标签 r dataframe type-conversion

我是 R 的新手,我有一个从文件中读取的大型数据框。里面的数据有列数据都是“正常”字符串,比如“Iceland”,但它也有包含数字但作为字符串的列,比如“25.1”。有没有办法将所有仅包含数字的字符串转换为数字?

我知道如何为一列做这件事:var <- as.numeric(dataFrame$var)但这不是很有效,因为我的数据框有大约 160 列。

我尝试按如下方式转换整个数据框,但它不起作用:

DF2 <- lapply(DF1, function(x) {
  ifelse(!is.na(suppressWarnings(as.numeric(x))), as.numeric(as.character(x)), x)
})

使用 DF2$colName 测试列返回“字符”,而不是“数字”。这似乎也将数据框变成了列表。

作为旁注,我已经使用 read.csv() 读取了数据框除了文件名之外没有任何参数。此外,列不会混合类型,它要么都是普通字符串,要么都是数字字符串。

谢谢!

最佳答案

我们可以使用type.convert函数

示例数据

df <- data.frame(a=c("2.1"), b='iceland')

检查原始示例数据中的类:

df |> lapply(\(x) class(x))

$a
[1] "character"

$b
[1] "character"

转型

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

测试输出

df |> lapply(\(x) class(x))

$a
[1] "numeric"

$b
[1] "character"

关于r - 如何将数据框中的所有数字字符串转换为 R 中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73749551/

相关文章:

r - 编织 PDF 时如何去除垃圾代码

r - seq() 跳过序列中的一个值

java - 将 scala.collection.immutable.Vector 转换为 java.util.Collection

python - 使用 pandas 将数据帧从长转换为宽 - 单行输出

python - 将 2D 数据帧转换为 3D 数据帧

c - 验证数字和数字的长度

c# - DateTime.ToString() 不转换时间

c++ - 如何处理 R 中的 C++ 内部数据结构以允许保存/加载?

r - do_one(nmeth) 错误 : NA/NaN/Inf in foreign function call (arg 1)

python - 如何在 Pandas Dataframe 上分组后进行条件计数?