如何将数据帧列转换为数字类型?
当前回答
Df列出你的数据框架。X是要转换的df的一列
as.numeric(factor(df$x))
其他回答
蒂姆是对的,谢恩有个遗漏。以下是其他例子:
R> df <- data.frame(a = as.character(10:15))
R> df <- data.frame(df, num = as.numeric(df$a),
numchr = as.numeric(as.character(df$a)))
R> df
a num numchr
1 10 1 10
2 11 2 11
3 12 3 12
4 13 4 13
5 14 5 14
6 15 6 15
R> summary(df)
a num numchr
10:1 Min. :1.00 Min. :10.0
11:1 1st Qu.:2.25 1st Qu.:11.2
12:1 Median :3.50 Median :12.5
13:1 Mean :3.50 Mean :12.5
14:1 3rd Qu.:4.75 3rd Qu.:13.8
15:1 Max. :6.00 Max. :15.0
R>
我们的data.frame现在有了因子列的摘要(counts)和as.numeric()的数值摘要(这是错误的,因为它得到了数值因子级别)以及as.numeric(as.character())的(正确的)摘要。
考虑到可能存在char列,这是基于@Abdou在获取列类型的excel表格自动回答:
makenumcols<-function(df){
df<-as.data.frame(df)
df[] <- lapply(df, as.character)
cond <- apply(df, 2, function(x) {
x <- x[!is.na(x)]
all(suppressWarnings(!is.na(as.numeric(x))))
})
numeric_cols <- names(df)[cond]
df[,numeric_cols] <- sapply(df[,numeric_cols], as.numeric)
return(df)
}
df<-makenumcols(df)
要将字符转换为数字,您必须通过应用将其转换为因数
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))
它将成功地将字符转换为数字
要将数据帧列转换为数字,你只需要做:-
因数转换为数字:-
data_frame$column <- as.numeric(as.character(data_frame$column))
如果x是dataframe dat的列名,x的类型是factor,使用:
as.numeric(as.character(dat$x))
推荐文章
- 使用pandoc从Markdown转换为PDF时设置空白大小
- 使用pandas对同一列进行多个聚合
- ggplot2折线图给出“geom_path:每组只包含一个观测值。你需要调整群体审美吗?”
- 在Python Pandas中删除多个列中的所有重复行
- 将Pandas多索引转换为列
- 熊猫数据帧得到每组的第一行
- 导入文本文件为单字符字符串
- 为什么我的熊猫'应用'功能引用多列工作?
- 移除jupyter笔记本上的内核
- 提取一个dplyr tbl列作为向量
- 查找名称包含特定字符串的列
- 将空白值(空格)替换为pandas中的NaN
- 如何在R中绘制两个直方图?
- 显示/打印tibble的所有行(tbl_df)
- Pandas数据框架fillna()只有一些列到位