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

前端之家收集整理的这篇文章主要介绍了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()将列强制转换为“最合适”的类型.

猜你在找的MsSQL相关文章