如何将数据帧列转换为数字类型?
当前回答
Df列出你的数据框架。X是要转换的df的一列
as.numeric(factor(df$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)
如果我想同时转换成矩阵和数字,我通常使用最后一个
要将数据帧列转换为数字,你只需要做:-
因数转换为数字:-
data_frame$column <- as.numeric(as.character(data_frame$column))
虽然其他人已经很好地讨论了这个话题,但我想补充一个额外的快速思考/提示。可以使用regexp提前检查字符是否可能仅由数字组成。
for(i in seq_along(names(df)){
potential_numcol[i] <- all(!grepl("[a-zA-Z]",d[,i]))
}
# and now just convert only the numeric ones
d <- sapply(d[,potential_numcol],as.numeric)
想要了解更多复杂的正则表达式,以及为什么要学习/体验它们的力量,请访问这个非常好的网站:http://regexr.com/
与hablar::转换
要轻松地将多个列转换为不同的数据类型,可以使用hablar::convert。简单的语法:df %>% convert(num(a))将列a从df转换为数值。
详细的例子
让我们将mtcars的所有列转换为字符。
df <- mtcars %>% mutate_all(as.character) %>% as_tibble()
> df
# A tibble: 32 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 21 6 160 110 3.9 2.62 16.46 0 1 4 4
2 21 6 160 110 3.9 2.875 17.02 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
与hablar::转换:
library(hablar)
# Convert columns to integer, numeric and factor
df %>%
convert(int(cyl, vs),
num(disp:wt),
fct(gear))
结果:
# A tibble: 32 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
<chr> <int> <dbl> <dbl> <dbl> <dbl> <chr> <int> <chr> <fct> <chr>
1 21 6 160 110 3.9 2.62 16.46 0 1 4 4
2 21 6 160 110 3.9 2.88 17.02 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.44 1 0 3 1
要将字符转换为数字,您必须通过应用将其转换为因数
BankFinal1 <- transform(BankLoan, LoanApproval=as.factor(LoanApproval))
BankFinal1 <- transform(BankFinal1, LoanApp=as.factor(LoanApproval))
您必须用相同的数据创建两列,因为一列不能转换为数字。如果你做一次转换,它会给出如下错误
transform(BankData, LoanApp=as.numeric(LoanApproval))
警告信息: 在eval(替代(列表 (...)), `_ 数据”,parent.frame ()): 胁迫引入的NAs
所以,在做了两列相同的数据应用后
BankFinal1 <- transform(BankFinal1, LoanApp = as.numeric(LoanApp),
LoanApproval = as.numeric(LoanApproval))
它将成功地将字符转换为数字
推荐文章
- 在R函数中指定可选参数的“正确”方法
- 如何在R中选择CRAN镜像
- dplyr包可以用于条件突变吗?
- 在Swift中转换Float为Int
- 一次加载多个包
- 将缺失的日期添加到熊猫数据框架中
- 如何防止ifelse()从日期对象转化为数字对象
- 如何将字符串转换为日期时间与格式规范在JavaScript?
- Pandas:索引数据帧时的多个条件-意外行为
- 使用sklearn缩放Pandas数据框架列
- read_csv . pandas中的Datetime dtypes
- 是否在函数中显式调用return
- 熊猫能自动从CSV文件中读取日期吗?
- 比较两个dataframe并并排输出它们的差异
- 从向量中移除NA值