如何将df的所有列从字符转换为数字?

时间:2016-02-15 00:29:37

标签: r

我想将df的所有列从字符转换为数字。

例如:

 A      B      C     D
"1"  "10.2"  "0.2"  "8"
"5"  "2.1"   "0.5"  "6"
"3"  "4.6"   "0.3"  "7"

将所有列(A,B,C,D)中的字符值转换为数字。谢谢!

4 个答案:

答案 0 :(得分:5)

很多方法都是这样做的。我喜欢purrr

这种做法
library(purrr)
df %>% map_if(is.character, as.numeric) 

str(df)
'data.frame':   3 obs. of  4 variables:
 $ A: num  1 5 3
 $ B: num  10.2 2.1 4.6
 $ C: num  0.2 0.5 0.3
 $ D: num  8 6 7

答案 1 :(得分:1)

我们可以使用lapply

 df[] <- lapply(df, function(x) if(is.character(x)) as.numeric(x)
                          else x)

如果我们知道所有列都是'字符'并且需要转换

df[] <- lapply(df, as.numeric)

答案 2 :(得分:0)

看看这个:R Convert quoted numbers to numeric

基本上,您可以使用apply()函数与as.numeric()连接,将数字转换为数字。

答案 3 :(得分:0)

我喜欢这样做。

data <- apply(df, 1, fun(x) as.numeric(x))