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


当前回答

如果你遇到以下问题:

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

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

一个潜在的解决方案是:

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

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

其他回答

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

因数转换为数字:-

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

如果你遇到以下问题:

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

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

一个潜在的解决方案是:

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

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

使用下面的代码,您可以将所有数据帧的列转换为数字(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)

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

如果数据帧有多种类型的列,一些字符,一些数字尝试以下转换列包含数值为数值:

for (i in 1:length(data[1,])){
  if(length(as.numeric(data[,i][!is.na(data[,i])])[!is.na(as.numeric(data[,i][!is.na(data[,i])]))])==0){}
  else {
    data[,i]<-as.numeric(data[,i])
  }
}

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

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