sql – 自动更正数据框中所有变量类的任何方法
我有一个约250个变量的数据帧.不幸的是,所有这些变量都是使用sqldf从sql数据库导入为字符类的.
问题是:所有这些都不应该是字符类.有数字变量,整数,以及日期.我想构建一个运行在所有变量上的模型,为此我需要确保变量具有正确的类.一个接一个地做它可能是最好的,但仍然非常手动. 我怎么能自动纠正所有课程?也许是一种检测列中是否有字母字符或只有数字字符的方法? 我不认为自动方法可以完美地纠正所有课程.但它可能会纠正大多数类,然后是那些不好的类,我可以手动处理它们. 我正在添加一个sqldf标签,以防任何人在导入数据时知道如何纠正这个问题,但我认为这不是sqldf的错,而是数据库的错误. 解决方法最接近数据框上的“自动”类型转换可能是df[] <- lapply(df,type.convert) 其中df是您的数据集.函数type.convert()
阅读帮助(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()将列强制转换为“最合适”的类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |