我有来自“Penn World Tables”的(宏观经济)年度数据。我的日期标签有问题。如下所示,日期以小数表示。我已经多次尝试修复它,但一再失败:我向你寻求帮助。
我认为,发生这种情况是因为“日期”(整数,如 2000、2001 等)被视为numeric
而不是dates
. 因此,我的主要问题是修复数据框中的日期格式以便于绘图。
如果 pwt 表示我的数据框的名称,而 year 表示存储“日期”的列,这就是我尝试过的,但没有成功:
pwt$year <- strptime(pwt$year, format = "%Y")
pwt$year <- as.Date(as.character(pwt$year), format("%Y"), origin = "1970-01-01")
pwt$year <- as.Date(pwt$year, format='%Y-01-01', origin = "1970-01-01")
pwt$year <- as.yearmon(pwt$year) # requires zoo package
可重现的代码
现在让我介绍一下数据。我将向您展示应该重新创建数据的步骤。
### Define directories
if(.Platform$OS.type == "windows"){
currentdir <- "c:/R/pwt"
} else {
currentdir <- "~/R/pwt"}
setwd(currentdir)
# download and save data in current directory
download.file("http://www.rug.nl/research/GGDC/data/pwt/V80/pwt80.xlsx", "pwt80.xlsx", mode="wb")
# **Edit** binary mode "wb" needed!
# convert and save the data sheet in csv format
library(gdata)
installXLSXsupport() # support for xlsx format
DataSheet <- read.xls("pwt80.xlsx", sheet="Data") # load the Data sheet only
write.csv(DataSheet, file=paste("pwt80", "csv", sep="."), row.names=FALSE)
# read pwt80.csv data stored in current directory
pwt80 <- read.csv(paste(currentdir, "pwt80.csv", sep="/"))
# use -subset- to get specifc countries and variables.
countries <- c("ESP", "ITA")
variables <- c("country", "countrycode", "year", "rgdpo", "pop")
pwt <- subset(#
pwt80
, countrycode %in% countries
, select = variables
)#
我现在有兴趣绘制上述国家子样本的人均 GDP。所以这里有一些打算这样做的代码。
# Plot data with qplot
library(ggplot2)
qp <- qplot(#
year
, rgdpo/pop
, data = subset(pwt80, countrycode %in% countries)
, geom = "line"
, group = countrycode
, color = as.factor(countrycode)
)#
qp <- qp +
xlab("") +
ylab("Real GDP Per Capita (international $, 2005 prices, chain)") +
theme(legend.title = element_blank()) +
coord_trans(y = "log10")
此时日期看起来还不错,但是当我使用 xlim 和 ylim “缩放”时,事情开始出错:
qp <- qp + xlim(2000,2010) + ylim(22000,35000)
qp
如果我使用 ggplot 而不是 qplot,也会存在同样的问题。
# Plot data with ggplot
ggp <- ggplot(pwt,aes(x=year,y=rgdpo/pop,color=as.factor(countrycode),group=countrycode)) +
geom_line()
ggp <- ggp +
xlab("") +
ylab("Real GDP Per Capita (international $, 2005 prices, chain)") +
theme(legend.title = element_blank()) +
coord_trans(y = "log10")
ggp
ggp <- ggp + xlim(2000,2010) + ylim(22000,35000)
ggp
编辑:删除了与xts
对象相关的问题。删除了dput()
缩短问题。