使用readxl和正确的变量类型将多个excel电子表格读入R中

时间:2015-09-03 15:08:50

标签: r excel readxl

我有几个excel文件,我试图使用包readxl读入R。 excel文件由几个选项卡组成,每个选项卡包含60000行,包含四列变量。第一列是一个简单的整数计数,用于跟踪0,1,2等的秒数。第二列在HH:MM:SS中以冒号分隔(:)时间。第三列是正斜杠(/)日期,分别为MM / DD / YYYY。第四列是浮点十进制(例如338.6)。

使用以下代码我得到四列,一些格式是一致的,但有些数据似乎被误解为日期或十进制数而不是整数,时间或日期。

    > data1 <- lapply(excel_sheets("./file_name.xls"),
                      read_excel, path = "./file_name.xls",
                      col_names = FALSE)
    > head(data1[[1]])
          X1       X2         X3    X4
    1 502342 02:12:50 02/04/2015 338.6
    2 502341 02:12:49 02/04/2015 338.1
    3 502340 02:12:48 02/04/2015 337.5
    4 502339 02:12:47 02/04/2015 337.6
    5 502338 02:12:46 02/04/2015 337.5
    6 502337 02:12:45 02/04/2015 338.0

    > head(data1[[2]])
            X1       X2     X3       X4
    1   483664 08:56:48 488774 08:52:22
    2 08:49:32 08:56:47 488774 08:52:22
    3    185.2 08:56:46 488774   485475
    4   483663 08:56:45 488774 08:52:22
    5 08:49:31 08:56:44 488774 08:52:22
    6   483662 08:56:43 488774   485475
    > class(data1[[2]]$X1)
    [1] "character"
    > mode(data1[[2]]$X1)
    [1] "character"

    > tail(data1[[1]])
                X1       X2     X3       X4
    59995 08:49:35 08:56:54 488774 08:52:22
    59996   483666 08:56:53 488774   485475
    59997 08:49:34 08:56:52 488774 08:51:50
    59998    185.3 08:56:51 488774 08:51:50
    59999   483665 08:56:50 488774   485475
    60000 08:49:33 08:56:49 488774   485475
    > tail(data1[[2]])
                X1       X2     X3     X4
    59995 09:29:17   497592 488774 488206
    59996   485927   497591 488774 488206
    59997 09:29:16   497590 488774 488206
    59998   485926    363.0 488774 488206
    59999 09:29:15 12:49:37 488774 488206
    60000   485925   497588 488774 488206

我也尝试使用col_types来定义列类型,但这会返回一个充满NA的数据框。

    > data1 <- lapply(excel_sheets("./file_name.xls"),
                      read_excel, path = "./file_name.xls",
                      col_names = FALSE,
                      col_types = c("numeric", "numeric", "date","numeric"))
    There were 50 or more warnings (use warnings() to see the first 50)

    > head(data1[[1]])
      X1 X2   X3 X4
    1 NA NA <NA> NA
    2 NA NA <NA> NA
    3 NA NA <NA> NA
    4 NA NA <NA> NA
    5 NA NA <NA> NA
    6 NA NA <NA> NA

lapply()read_excel()一起使用会返回数据框列表。我不确定我是否应该尝试更改变量类型或者如何准确地执行此操作。 excel文件本身在变量类型方面看起来是一致的。我甚至检查了data1[[2]]中的第59998行,其中显示了对于X2的363.0,但它应该是03:42:51。

我应该尝试在excel中格式化这些数据还是尝试在R中更改它?目前看来一切都是阶级性格。在R中更改变量类型的最有效方法是什么?

感谢您的帮助。

0 个答案:

没有答案