迄今为止的因子转换产生 NA
Factor to date conversion produces NA
我正在处理 kaggle 数据集,这里有一些示例代码:
之前:
Date Open High Low Close Volume Adj.Close
1 6/29/2010 19.00 25.00 17.54 23.89 18766300 23.89
2 6/30/2010 25.79 30.42 23.30 23.83 17187100 23.83
3 7/1/2010 25.00 25.92 20.27 21.96 8218800 21.96
4 7/2/2010 23.00 23.10 18.71 19.20 5139800 19.20
5 7/6/2010 20.00 20.00 15.83 16.11 6866900 16.11
6 7/7/2010 16.40 16.63 14.98 15.80 6921700 15.80
现在这是从左到右每列的 class(因子、数字、数字、数字、数字、整数、数字)
我应用这行代码将我的日期(因子)列更改为日期类型
data$Date <- as.Date(data$Date, format = "%d/%m/%Y")
现在,当我这样做时,我再次 运行 "sapply(data, class)" 并 "is.factor(data$Date)" 进行检查,结果成功了!
但问题是:
Date Open High Low Close Volume Adj.Close
1 <NA> 19.00 25.00 17.54 23.89 18766300 23.89
2 <NA> 25.79 30.42 23.30 23.83 17187100 23.83
3 2010-01-07 25.00 25.92 20.27 21.96 8218800 21.96
4 2010-02-07 23.00 23.10 18.71 19.20 5139800 19.20
5 2010-06-07 20.00 20.00 15.83 16.11 6866900 16.11
6 2010-07-07 16.40 16.63 14.98 15.80 6921700 15.80
我的数据集 1692x7,我做了一个 NA 计数,现在我得到了 1021 个 NA(60% 的数据)
有谁知道将因子转换为没有所有 NA 的日期类型的更好方法吗?
您需要使用 as.Date(df$Date, format = "%m/%d/%Y")
而不是 as.Date(data$Date, format = "%d/%m/%Y")
。
as.Date(df$Date, format = "%m/%d/%Y")
# [1] "2010-06-29" "2010-06-30" "2010-07-01" "2010-07-02" "2010-07-06"
# [6] "2010-07-07"
是month/day/year
不是day/month/year
我正在处理 kaggle 数据集,这里有一些示例代码:
之前:
Date Open High Low Close Volume Adj.Close
1 6/29/2010 19.00 25.00 17.54 23.89 18766300 23.89
2 6/30/2010 25.79 30.42 23.30 23.83 17187100 23.83
3 7/1/2010 25.00 25.92 20.27 21.96 8218800 21.96
4 7/2/2010 23.00 23.10 18.71 19.20 5139800 19.20
5 7/6/2010 20.00 20.00 15.83 16.11 6866900 16.11
6 7/7/2010 16.40 16.63 14.98 15.80 6921700 15.80
现在这是从左到右每列的 class(因子、数字、数字、数字、数字、整数、数字)
我应用这行代码将我的日期(因子)列更改为日期类型
data$Date <- as.Date(data$Date, format = "%d/%m/%Y")
现在,当我这样做时,我再次 运行 "sapply(data, class)" 并 "is.factor(data$Date)" 进行检查,结果成功了! 但问题是:
Date Open High Low Close Volume Adj.Close
1 <NA> 19.00 25.00 17.54 23.89 18766300 23.89
2 <NA> 25.79 30.42 23.30 23.83 17187100 23.83
3 2010-01-07 25.00 25.92 20.27 21.96 8218800 21.96
4 2010-02-07 23.00 23.10 18.71 19.20 5139800 19.20
5 2010-06-07 20.00 20.00 15.83 16.11 6866900 16.11
6 2010-07-07 16.40 16.63 14.98 15.80 6921700 15.80
我的数据集 1692x7,我做了一个 NA 计数,现在我得到了 1021 个 NA(60% 的数据)
有谁知道将因子转换为没有所有 NA 的日期类型的更好方法吗?
您需要使用 as.Date(df$Date, format = "%m/%d/%Y")
而不是 as.Date(data$Date, format = "%d/%m/%Y")
。
as.Date(df$Date, format = "%m/%d/%Y")
# [1] "2010-06-29" "2010-06-30" "2010-07-01" "2010-07-02" "2010-07-06"
# [6] "2010-07-07"
是month/day/year
不是day/month/year