给定一个data.frame只包含字符串的列(没有因子),其中一些应保留字符串,其中一些是整数,其中一些是双精度,我怎么能猜出转换字符串最合适的存储模式?
fixDf <- data.frame(isChar=c("A", "B", "C"),
isDouble=c("0.01", "0.02", "0.03"),
isInteger=c("1", "2", "3"), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种简单的方法可以确定需要完成以下操作,然后执行此操作:
mode(fixDf[, "isDouble"]) <- "double"
mode(fixDf[, "isInteger"]) <- "integer"
Run Code Online (Sandbox Code Playgroud)
理想情况下,遇到错误时,处理此错误的函数会使数据保持字符串形式.
您可以使用colwise从plyr包和type.convert功能.
library(plyr)
foo = colwise(type.convert)(fixDf)
str(foo)
'data.frame': 3 obs. of 3 variables:
$ isChar : Factor w/ 3 levels "A","B","C": 1 2 3
$ isDouble : num 0.01 0.02 0.03
$ isInteger: int 1 2 3
Run Code Online (Sandbox Code Playgroud)
或者使用基数R:
as.data.frame(lapply(fixDf, type.convert))
Run Code Online (Sandbox Code Playgroud)
type_convertfrom readr正是您想要的,对整个数据帧进行操作。它可以很好地处理逻辑、数字(整数和双精度)、字符串和日期/时间,而无需强制因子。
type_convert(fixDf)
Run Code Online (Sandbox Code Playgroud)
要单独解析列,请使用parse_guess.
| 归档时间: |
|
| 查看次数: |
902 次 |
| 最近记录: |