如何将数据帧列转换为数字类型?
当前回答
要将数据帧列转换为数字,你只需要做:-
因数转换为数字:-
data_frame$column <- as.numeric(as.character(data_frame$column))
其他回答
如果x是dataframe dat的列名,x的类型是factor,使用:
as.numeric(as.character(dat$x))
使用type.convert()和rapply()的通用方式:
convert_types <- function(x) {
stopifnot(is.list(x))
x[] <- rapply(x, utils::type.convert, classes = "character",
how = "replace", as.is = TRUE)
return(x)
}
d <- data.frame(char = letters[1:5],
fake_char = as.character(1:5),
fac = factor(1:5),
char_fac = factor(letters[1:5]),
num = 1:5, stringsAsFactors = FALSE)
sapply(d, class)
#> char fake_char fac char_fac num
#> "character" "character" "factor" "factor" "integer"
sapply(convert_types(d), class)
#> char fake_char fac char_fac num
#> "character" "integer" "factor" "factor" "integer"
我会加一条评论(不能低评级)
只需要添加user276042和pangratz
dat$x = as.numeric(as.character(dat$x))
这将覆盖现有列x的值
如果您不关心保留因子,并希望将其应用到任何可以转换为数字的列,我使用下面的脚本。 如果df是您的原始数据框架,您可以使用下面的脚本。
df[] <- lapply(df, as.character)
df <- data.frame(lapply(df, function(x) ifelse(!is.na(as.numeric(x)), as.numeric(x), 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])
}
}
推荐文章
- 在R函数中指定可选参数的“正确”方法
- 如何在R中选择CRAN镜像
- dplyr包可以用于条件突变吗?
- 在Swift中转换Float为Int
- 一次加载多个包
- 将缺失的日期添加到熊猫数据框架中
- 如何防止ifelse()从日期对象转化为数字对象
- 如何将字符串转换为日期时间与格式规范在JavaScript?
- Pandas:索引数据帧时的多个条件-意外行为
- 使用sklearn缩放Pandas数据框架列
- read_csv . pandas中的Datetime dtypes
- 是否在函数中显式调用return
- 熊猫能自动从CSV文件中读取日期吗?
- 比较两个dataframe并并排输出它们的差异
- 从向量中移除NA值