从纯文本数据确定“真实”数据类型

时间:2018-08-07 00:46:35

标签: r

我的原始数据如下:

C1    C2        C3     C4
"1"   "6464"    "abc"  "1"
"2"   "3434"    "def"  "0"
"3"   "3434"    "ghi"  "1"
"4"   "asd"     "jkl"  "1"
"5"   "4565"    "mno"  "0"

我知道我可以使用 str type mode class 等来确定数据类型,但是R中是否有任何程序包可以根据原始数据内容本身来估计主要类型?

例如我可以看到C1将是数字(尽管将被报告为char),C2大部分将是数字,除了一个字符值,C3是字符,C4将是数字(如果仅包含0/1,则可能是逻辑的)。我可以编写函数来解决这个问题,只是不想重新发明轮子(如果存在)?

最终目标是编写一个清理/转换函数,以(在很大程度上)自动修复原始数据。

欢呼 B

1 个答案:

答案 0 :(得分:1)

您可以使用readr::parse_guess自动猜测向量的类型。

这是一个例子

# Read data as data.table of character vectors
df <- read.table(text =
    'C1    C2        C3     C4
1   6464    abc  1
2   3434    def  0
3   3434    ghi  1
4   asd     jkl  1
5   4565    mno  0', header = T, colClasses = "character")

library(purrr)
library(readr)
map_df(df, ~parse_guess(.x))
## A tibble: 5 x 4
#     C1 C2    C3       C4
#  <int> <chr> <chr> <int>
#1     1 6464  abc       1
#2     2 3434  def       0
#3     3 3434  ghi       1
#4     4 asd   jkl       1
#5     5 4565  mno       0