加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 自动更正数据框中所有变量类的任何方法

发布时间:2020-12-12 06:32:20 所属栏目:MsSql教程 来源:网络整理
导读:我有一个约250个变量的数据帧.不幸的是,所有这些变量都是使用sqldf从sql数据库导入为字符类的. 问题是:所有这些都不应该是字符类.有数字变量,整数,以及日期.我想构建一个运行在所有变量上的模型,为此我需要确保变量具有正确的类.一个接一个地做它可能是最好
我有一个约250个变量的数据帧.不幸的是,所有这些变量都是使用sqldf从sql数据库导入为字符类的.
问题是:所有这些都不应该是字符类.有数字变量,整数,以及日期.我想构建一个运行在所有变量上的模型,为此我需要确保变量具有正确的类.一个接一个地做它可能是最好的,但仍然非常手动.

我怎么能自动纠正所有课程?也许是一种检测列中是否有字母字符或只有数字字符的方法?

我不认为自动方法可以完美地纠正所有课程.但它可能会纠正大多数类,然后是那些不好的类,我可以手动处理它们.

我正在添加一个sqldf标签,以防任何人在导入数据时知道如何纠正这个问题,但我认为这不是sqldf的错,而是数据库的错误.

解决方法

最接近数据框上的“自动”类型转换可能是
df[] <- lapply(df,type.convert)

其中df是您的数据集.函数type.convert()

Converts a character vector to logical,integer,numeric,complex or factor as appropriate.

阅读帮助(type.convert),它可能就是你想要的.

根据我的经验,type.convert()非常可靠.如果您不希望字符强制使用因子,则可以使用as.is = TRUE.此外,它在许多重要的R函数内部使用(如read.table),因此它绝对安全.

这是一个关于虹膜工作的简单例子.首先,我们将所有列更改为字符,然后对其运行type.convert().

## Original column classes in iris
sapply(iris,class)
# Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
#    "numeric"    "numeric"    "numeric"    "numeric"     "factor" 

## Change all columns to character
iris[] <- lapply(iris,as.character)
sapply(iris,class)
# Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
#  "character"  "character"  "character"  "character"  "character" 

## Run type.convert()
iris[] <- lapply(iris,type.convert)
sapply(iris,class)
# Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
#    "numeric"    "numeric"    "numeric"    "numeric"     "factor"

我们可以看到列已返回到原始类.这是因为type.convert()将列强制转换为“最合适”的类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读