read_excel(来自 readxl 包)将 1899-12-30 之前的日期读取为 NA,如何解决此问题?

2024-04-06

我有一个包含 130 场足球比赛的数据集,这些比赛的历史可以追溯到 1893 年。

当我从 Excel 导入数据集时,1900 年的日期与 R (RStudio) 中应有的日期相同。但是,1900 年之前的日期以 NA 形式出现。

我该如何解决这个问题,以便所有日期都以正确的格式来自 Excel?

或者,如何用正确的 (18XX-MM-DD) 日期替换 NA?

这是 Excel 中显示的数据:

    Home_Team, Away_Team, SUFC, SWFC, H,  A,  Score, Season, Date

Sheffield United, Sheffield Wednesday, 1, 1, 1, 1, 1–1, 1893/94, 1893-10-16

Sheffield United, Sheffield Wednesday, 1, 0, 1, 0, 1–0, 1894/95, 1895-01-12

Sheffield United, Sheffield Wednesday, 1, 1, 1, 1, 1–1, 1895/96, 1895-12-26

Sheffield United, Sheffield Wednesday, 2, 0, 2, 0, 2–0, 1896/97, 1896-12-26

Sheffield United, Sheffield Wednesday, 1, 1, 1, 1, 1–1, 1897/98, 1897-12-27

Sheffield United, Sheffield Wednesday, 2, 1, 2, 1, 2–1, 1898/99, 1898-12-26

Sheffield United, Sheffield Wednesday, 1, 0, 1, 0, 1–0, 1900/01, 1900-12-15

Sheffield United, Sheffield Wednesday, 3, 0, 3, 0, 3–0, 1901/02, 1902-03-01

Sheffield United, Sheffield Wednesday, 2, 3, 2, 3, 2–3, 1902/03, 1902-09-01

Sheffield United, Sheffield Wednesday, 1, 1, 1, 1, 1–1, 1903/04, 1903-12-12

Sheffield United, Sheffield Wednesday, 4, 2, 4, 2, 4–2, 1904/05, 1905-04-08

Sheffield United, Sheffield Wednesday, 0, 2, 0, 2, 0–2, 1905/06, 1905-10-21

这是我应用到它的 R 代码:

library(tidyverse)
library(readxl)
library(magrittr)
library(dplyr)
library(ggplot2)
library(tidyr)

Sheff_derby_R <- read_excel("sheffield_derby/Sheff_derby_R.xlsx", 
                        col_types = c("text", "text", "text", 
                                      "text", "text", "text", "text", 
                                       "text", 
                                      "date", "text", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "numeric", "numeric", 
                                      "numeric", "text"))
 View(Sheff_derby_R)

在 R 中,18xx 日期(最后一栏,不是 18xx/xx 季节栏)被 NA 替换。这是头部,前 12 行:

    Home_Team Away_Team SUFC  SWFC  H     A     Score Season Date                
   <chr>     <chr>     <chr> <chr> <chr> <chr> <chr> <chr>  <dttm>              
 1 Sheffiel~ Sheffiel~ 1     1     1     1     1 – 1 1893/~ NA                  
 2 Sheffiel~ Sheffiel~ 1     0     1     0     1 – 0 1894/~ NA                  
 3 Sheffiel~ Sheffiel~ 1     1     1     1     1 – 1 1895/~ NA                  
 4 Sheffiel~ Sheffiel~ 2     0     2     0     2 – 0 1896/~ NA                  
 5 Sheffiel~ Sheffiel~ 1     1     1     1     1 – 1 1897/~ NA                  
 6 Sheffiel~ Sheffiel~ 2     1     2     1     2 – 1 1898/~ NA                  
 7 Sheffiel~ Sheffiel~ 1     0     1     0     1 – 0 1900/~ 1900-12-15 00:00:00 
 8 Sheffiel~ Sheffiel~ 3     0     3     0     3 – 0 1901/~ 1902-03-01 00:00:00 
 9 Sheffiel~ Sheffiel~ 2     3     2     3     2 – 3 1902/~ 1902-09-01 00:00:00 
10 Sheffiel~ Sheffiel~ 1     1     1     1     1 – 1 1903/~ 1903-12-12 00:00:00 
11 Sheffiel~ Sheffiel~ 4     2     4     2     4 – 2 1904/~ 1905-04-08 00:00:00 
12 Sheffiel~ Sheffiel~ 0     2     0     2     0 – 2 1905/~ 1905-10-21 00:00:00 

无论存在什么错误,这里都有一个可能的(临时)解决方法:

首先,读入为"text"看看 R 有点窒息的原因之一。 (我过于简单化了read_excel这里的争论,因为"text"是它的默认值Date在这种情况下。在你的情况下,只需更新"date" to "text"在你的向量中col_types.)

library(readxl)
x <- read_excel("Sheff_derby_SO.xlsx")
x$Date
#  [1] "1893-10-16" "1895-01-12" "1895-12-26" "1896-12-26" "1897-12-27"
#  [6] "1898-12-26" "350"        "791"        "975"        "1442"      
# [11] "1925"      

对于 1900 年及之后的日期,它们将作为整数传递。它们都恰好基于相同的日期来源,因此作为黑客我们可以这样做:

wrong <- !grepl("-", x$Date)
as.Date("1900-01-01") + as.integer(x$Date[wrong]) - 2L
# [1] "1900-12-15" "1902-03-01" "1902-09-01" "1903-12-12" "1905-04-08"

这与 excel 告诉我的相符thinks他们应该是。

注意:我原以为这是一个简单的偏移,但是+ 2L需要使其对齐。这表明可能还有其他事情正在发生,所以please使用您的所有数据(如果这不是全部数据)验证此技巧是否适用于其他值。

在数据集中替换它们就像

sav <- as.Date("1900-01-01") + as.integer(x$Date[wrong]) - 2L
x$Date <- as.Date(x$Date) # 'wrong' ones will be NA
x$Date[wrong] <- sav
x$Date
#  [1] "1893-10-16" "1895-01-12" "1895-12-26" "1896-12-26" "1897-12-27"
#  [6] "1898-12-26" "1900-12-15" "1902-03-01" "1902-09-01" "1903-12-12"
# [11] "1905-04-08"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

read_excel(来自 readxl 包)将 1899-12-30 之前的日期读取为 NA,如何解决此问题? 的相关文章

  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 使用 pkg:sjPlot 函数创建一个生成部分斜体单元格的数据框

    我正在尝试创建一个简单的数据表 其中 Coral taxon 列中的属名称为斜体 而 spp 列中的属名称为斜体 属名后面的部分不大写 我尝试使用 expression 函数对 Coral taxon 的每一行进行编码 但没有成功 sum
  • 更快的 %in% 运算符

    The 快速匹配 https cran r project org web packages fastmatch index html包实现了更快的版本match对于重复匹配 例如在循环中 set seed 1 library fastma
  • 排序因素与水平

    有人能解释一下 R 中 ordered 参数的用途吗 R says ordered逻辑标志来确定级别是否应被视为有序 按给定的顺序 所以如果我有一个名为名称的因素并设置ordered TRUE names lt factor c fred
  • 按特定样本前缀对列名称向量进行子集化

    假设我有一个如下所示的数据框 ca01 lt c 1 10 ca02 lt c 2 11 ca03 lt c 3 12 stuff 1 lt rep test 10 other lt rep 9 10 data lt data frame
  • ubuntu中R的igraph包的安装

    我使用以下命令在 ubuntu 中安装 R 的 igraph 包 install packages igraph 但我收到一条错误消息 警告 无法访问存储库的索引 http ftp iitm ac in cran src contrib h
  • 删除字符串末尾的句点和数字

    如何删除尾随句点 后面紧跟一个数字 长度为一位或两位数字 例子 z lt c awe p 56 red 45 ted 5 you 88 tom 我只想删除 45和 5 你只需要一个简单的正则表达式 z new gsub 0 9 z 一些评论
  • R 中按时间划分的平均值

    我每秒测量一次化合物浓度 我想求 30 秒和 60 秒的平均值 我一直在阅读这里的帖子 我尝试过lubridate and dplyr 但没有运气 我正在努力完成这项工作 但我一直没能做到 我正在从 SAS 过渡到 R 所以请耐心等待 这是
  • R 将多个值与向量进行比较并返回向量[重复]

    这个问题在这里已经有答案了 我有一个向量 A 对于 A 的每个元素 我想检查它是否等于第二个向量 Targets 中的任何元素 我想要一个逻辑值向量 其长度为 A 作为返回 也提到了同样的问题here http r 789695 n4 na
  • dplyr 返回每个组的全局平均值,而不是每个组的平均值

    有人可以解释一下我在这里做错了什么 library dplyr temp lt data frame a c 1 2 3 1 2 3 1 2 3 b c 1 2 3 1 2 3 1 2 3 temp gt group by temp 1 g
  • 获取函数的命名空间

    我正在开发一个包 我希望在其中向对象添加编辑历史记录 该包允许其他包注册用于编辑对象的函数 我正在寻找一种方法来记录注册用于编辑的函数的包的版本 问题是 给定一个函数 如何从导出的位置获取包 我的想法是调查它的搜索路径 但是search 仅
  • 如何添加链接以从我的 R闪亮应用程序在新窗口中打开 pdf 文件?

    我可以使用 a 从我的 Shiny 应用程序添加到外部站点的超链接 a google href http www google com 但如何创建一个链接来打开 pdf 或类似 文件 看起来应该很简单 但我找不到任何例子 我的问题与此类似
  • randomForest 包在删除一个预测类时的奇怪行为

    我正在运行一个随机森林模型 它产生的结果从统计角度来看对我来说完全没有意义 因此我确信有些东西mustrandomForest 包的代码出现错误 至少在模型的本次迭代中 预测 左侧变量是具有 3 种可能结果的政党 ID 民主党 独立党 共和
  • R 可以创建带有可单击条形图的条形图图像以插入网页吗?

    我知道如何创建条形图 以及如何将其粘贴在网页上 例如 使用hwriteImage in the 作家包 http www embl de gpau hwriter 我想要的是每个栏都是一个在鼠标悬停时突出显示的区域 并且每个栏在单击时都有不
  • Quantmod 的简单功能不再起作用

    我明天要交论文 我收到了一条关于 quantmod 的非常奇怪的错误消息 这是我在过去几周使用这个包时从未遇到过的 我无法导入特定于道琼斯指数 DJI 的数据 我收到以下错误消息 getSymbols DJI src yahoo from
  • purrr::可能函数可能无法与map2_chr函数一起使用

    我怀疑这是 purrr 包中的错误 但想先在 StackOverflow 中检查我的逻辑 在我看来 possibly功能在内部不起作用map2 chr功能 我正在使用 purrr 版本 0 2 5 考虑这个例子 library dplyr
  • R 中两个时间戳之间的左连接

    我的目标是执行左连接intervals哪里的bike id比赛和created at时间戳在records在 之间start and end in the intervals table gt class records 1 data ta
  • 需要在R中按行绑定列表数据

    我在 R 中按行绑定列表时遇到问题 我的列表数据集是 id 1 data k 1 id k b c 1 1 1 3 data k 2 id k b c 1 2 1 4 id 2 data k 1 id k b c 2 1 1 6 data
  • 如何在 data.table 中分组后使用条件计算行数

    我有以下数据框 dat lt read csv s1 s2 v1 v2 a b 10 20 a b 22 NA a b 13 33 c d 3 NA c d 4 5 NA c d 10 20 dat gt A tibble 6 x 4 gt
  • 在R中循环子文件夹

    我正在 R 环境中包含多个子文件夹的文件夹中工作 我想要循环遍历多个子文件夹 然后在每个子文件夹中调用 R 脚本来执行 我想出了下面的代码 但我的代码似乎添加了 到子文件夹列表 我收到错误 文件中的错误 文件名 r 编码 编码 无效的 描述

随机推荐