如何将数据帧列转换为数字类型?


当前回答

使用下面的代码,您可以将所有数据帧的列转换为数字(X是我们想要转换它的列的数据帧):

as.data.frame(lapply(X, as.numeric))

要将整个矩阵转换为数字,你有两种方法: :

mode(X) <- "numeric"

or:

X <- apply(X, 2, as.numeric)

你也可以使用数据。矩阵函数将所有内容转换为数字,尽管要注意,因子可能无法正确转换,因此先将所有内容转换为字符会更安全:

X <- sapply(X, as.character)
X <- data.matrix(X)

如果我想同时转换成矩阵和数字,我通常使用最后一个

其他回答

我会加一条评论(不能低评级)

只需要添加user276042和pangratz

dat$x = as.numeric(as.character(dat$x))

这将覆盖现有列x的值

要将数据帧列转换为数字,你只需要做:-

因数转换为数字:-

data_frame$column <- as.numeric(as.character(data_frame$column))

Df列出你的数据框架。X是要转换的df的一列

as.numeric(factor(df$x))

在我的PC (R v.3.2.3)中,apply或sapply给出错误。Lapply效果很好。

dt[,2:4] <- lapply(dt[,2:4], function (x) as.factor(as.numeric(x)))

如果你遇到以下问题:

as.numeric(as.character(dat$x))

看看你的小数点。如果它们是“,”而不是“。”(如。"5,3")以上都不行。

一个潜在的解决方案是:

as.numeric(gsub(",", ".", dat$x))

我相信这在一些非英语国家是很常见的。