【问题标题】:Getting NAs when parsing dates in readr using col_types [closed]使用 col_types 在 readr 中解析日期时获取 NA [关闭]
【发布时间】:2021-10-17 01:50:31
【问题描述】:

我有一个 this 数据集,我正在尝试使用 col_types 规范解析日期

dailyActivityMerged <- read_csv("/cloud/project/Fitabase Data/dailyActivity_merged.csv", 
                            col_types = list(
                              Id = col_double(),
                              ActivityDate = col_date(format = "%m %d %Y"),
                              TotalSteps = col_double(),
                              TotalDistance = col_double(),
                              TrackerDistance = col_double(),
                              LoggedActivitiesDistance = col_double(),
                              VeryActiveDistance = col_double(),
                              ModeratelyActiveDistance = col_double(),
                              LightActiveDistance = col_double(),
                              SedentaryActiveDistance = col_double(),
                              VeryActiveMinutes = col_double(),
                              FairlyActiveMinutes = col_double(),
                              LightlyActiveMinutes = col_double(),
                              SedentaryMinutes = col_double(),
                              Calories = col_double()
                            ))

但我收到一个错误,所有日期都在 ActivityDate 列中转换为 NA。

你能告诉我为什么会发生这种情况以及如何获取日期格式的日期吗?

【问题讨论】:

    标签: r date parsing


    【解决方案1】:

    原因是格式应该是%m/%d/%Y而不是%m %d %Y,根据链接中显示的数据中的列格式

    library(readr)
    dailyActivityMerged <- read_csv("/cloud/project/Fitabase Data/dailyActivity_merged.csv", 
                                col_types = list(
                                  Id = col_double(),
                                  ActivityDate = col_date(format = "%m/%d/%Y"),
                                  TotalSteps = col_double(),
                                  TotalDistance = col_double(),
                                  TrackerDistance = col_double(),
                                  LoggedActivitiesDistance = col_double(),
                                  VeryActiveDistance = col_double(),
                                  ModeratelyActiveDistance = col_double(),
                                  LightActiveDistance = col_double(),
                                  SedentaryActiveDistance = col_double(),
                                  VeryActiveMinutes = col_double(),
                                  FairlyActiveMinutes = col_double(),
                                  LightlyActiveMinutes = col_double(),
                                  SedentaryMinutes = col_double(),
                                  Calories = col_double()
                                ))
    

    -现在检查结构

    > str(dailyActivityMerged)
    spec_tbl_df [940 × 15] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
     $ Id                      : num [1:940] 1.5e+09 1.5e+09 1.5e+09 1.5e+09 1.5e+09 ...
     $ ActivityDate            : Date[1:940], format: "2016-04-12" "2016-04-13" "2016-04-14" "2016-04-15" ...
     $ TotalSteps              : num [1:940] 13162 10735 10460 9762 12669 ...
     $ TotalDistance           : num [1:940] 8.5 6.97 6.74 6.28 8.16 ...
     $ TrackerDistance         : num [1:940] 8.5 6.97 6.74 6.28 8.16 ...
     $ LoggedActivitiesDistance: num [1:940] 0 0 0 0 0 0 0 0 0 0 ...
     $ VeryActiveDistance      : num [1:940] 1.88 1.57 2.44 2.14 2.71 ...
     $ ModeratelyActiveDistance: num [1:940] 0.55 0.69 0.4 1.26 0.41 ...
     $ LightActiveDistance     : num [1:940] 6.06 4.71 3.91 2.83 5.04 ...
     $ SedentaryActiveDistance : num [1:940] 0 0 0 0 0 0 0 0 0 0 ...
     $ VeryActiveMinutes       : num [1:940] 25 21 30 29 36 38 42 50 28 19 ...
     $ FairlyActiveMinutes     : num [1:940] 13 19 11 34 10 20 16 31 12 8 ...
     $ LightlyActiveMinutes    : num [1:940] 328 217 181 209 221 164 233 264 205 211 ...
     $ SedentaryMinutes        : num [1:940] 728 776 1218 726 773 ...
     $ Calories                : num [1:940] 1985 1797 1776 1745 1863 ...
     - attr(*, "spec")=
      .. cols(
      ..   Id = col_double(),
      ..   ActivityDate = col_date(format = "%m/%d/%Y"),
      ..   TotalSteps = col_double(),
      ..   TotalDistance = col_double(),
      ..   TrackerDistance = col_double(),
      ..   LoggedActivitiesDistance = col_double(),
      ..   VeryActiveDistance = col_double(),
      ..   ModeratelyActiveDistance = col_double(),
      ..   LightActiveDistance = col_double(),
      ..   SedentaryActiveDistance = col_double(),
      ..   VeryActiveMinutes = col_double(),
      ..   FairlyActiveMinutes = col_double(),
      ..   LightlyActiveMinutes = col_double(),
      ..   SedentaryMinutes = col_double(),
      ..   Calories = col_double()
      .. )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多