我有一个tsv,其中有四分之一格式的日期字段(名为" trim")
trim
1992-4
1993-1
...
当我将文件作为数据框加载时,R将该字段作为字符导入。
我无法转换它,我只获得NA,即使我尝试:
df$trim <- as.Date(df$trim, format="%Y-%q")
或加载zoo包并发送此命令:
as.yearqtr(df$trim, format="%Y-%q")
有什么想法吗?
答案 0 :(得分:3)
这会将字符串转换为"yearqtr"
类和"Date"
类(季度第一)和"Date"
类(季度的最后一个):
library(zoo)
as.yearqtr("1992-4")
## [1] "1992 Q4"
as.Date(as.yearqtr("1992-4"))
## [1] "1992-10-01"
as.Date(as.yearqtr("1992-4"), frac = 1)
## [1] "1992-12-31"
请注意,zoo有scale_x_yearqtr
用于定义适合"yearqtr"
类的ggplot2 X轴。
答案 1 :(得分:2)
如果您坚持使用基本R as.Date()
功能,那么您需要考虑的一个选项是将季度映射到几个月。在下面的代码中,我将季度映射到该季度发生的第一个月。然后我在"01"
标记该月的第一天,然后转换为日期。
trim <- c("1992-4", "1993-1")
trim <- gsub("-1", "-01", trim) # map first quarter to January
trim <- gsub("-2", "-04", trim) # map second quarter to April
trim <- gsub("-3", "-07", trim) # map third quarter to July
trim <- gsub("-4", "-10", trim) # map fourth quarter October
trim <- paste(trim, "-01", sep="") # add first day of the month
trim <- as.Date(trim, "%Y-%m-%d") # convert to date
> trim
[1] "1992-10-01" "1993-01-01"
P.S。这个问题有点像this SO post。但它的不同之处值得一个新的答案IMO。
答案 2 :(得分:2)
你可以使用lubridate。 它可以使用tidyverse加载。
func setUpUI() {
// Create a SCIChartSurface. This is a UIView so can be added directly to the UI
sciChartSurface = SCIChartSurface(frame: self.view.bounds)
sciChartSurface?.translatesAutoresizingMaskIntoConstraints = true
// Add the SCIChartSurface as a subview
self.view.addSubview(sciChartSurface!)
// Create an XAxis and YAxis. This step is mandatory before creating series
sciChartSurface?.xAxes.add(SCIDateTimeAxis())
sciChartSurface?.yAxes.add(SCINumericAxis())
}