我从经合组织网站下载了一些.xls格式的GDP数据。但是,要使此数据在R中可用,我需要将数据重新格式化为.csv文件。更具体地说,我需要第一列中的年,日和月,以及逗号之后我需要GDP值(例如:1990-01-01,234590)。
具有GDP值的列可以轻松复制和转置,但如何快速添加日期?有没有快速的方法来做到这一点,而无需手动添加日期?
感谢您的帮助!
最佳, 肖恩
PS。链接到(某个)特定OECD文件:https://ufile.io/8ogav或https://stats.oecd.org/index.aspx?queryid=350#
PSS。我现在已将文件更改为:
我希望将其转换为与示例1相同的样式。 我用于读取数据的代码:
dput(head(gdp.table))
structure(list(V1 = c("Q2-1970;1.438.810 ", "Q3-1970;1.465.684 ",
"Q4-1970;1.478.108 ", "Q1-1971;1.449.712 ", "Q2-1971;1.480.136 ",
"Q3-1971;1.505.743 ")), row.names = c(NA, 6L), class = "data.frame")
PSS。
contextmenu.setOnAction(e -> System.out.printly(((MenuItem)e.getTarget()).getText()));
答案 0 :(得分:0)
使用您的数据:
z <- structure(list(V1 = c("Q2-1970;1.438.810 ", "Q3-1970;1.465.684 ",
"Q4-1970;1.478.108 ", "Q1-1971;1.449.712 ", "Q2-1971;1.480.136 ",
"Q3-1971;1.505.743 ")), row.names = c(NA, 6L), class = "data.frame")
dat <- read.csv2(text=paste(z$V1, collapse='\n'), stringsAsFactors=FALSE, header=FALSE)
dat
# V1 V2
# 1 Q2-1970 1.438.810
# 2 Q3-1970 1.465.684
# 3 Q4-1970 1.478.108
# 4 Q1-1971 1.449.712
# 5 Q2-1971 1.480.136
# 6 Q3-1971 1.505.743
和一个简单的功能,用每个季度的第一个日期替换宿舍
quarters <- function(s, format) {
qs <- c("Q1","Q2","Q3","Q4")
dts <- c("01-01", "04-01", "07-01", "10-01")
for (i in seq_along(qs))
s <- sub(qs[i], dts[i], s)
if (! missing(format))
s <- as.Date(s, format=format)
s
}
我们可以将它们更改为日期字符串,保留顺序:
str(quarters(dat$V1))
# chr [1:6] "04-01-1970" "07-01-1970" "10-01-1970" "01-01-1971" ...
或者我们可以通过设置格式转换为Date
个对象:
str( quarters(dat$V1, format='%m-%d-%Y') )
# Date[1:6], format: "1970-04-01" "1970-07-01" "1970-10-01" "1971-01-01" ...
所以用实际的Date
对象替换列只是dat$V1 <- quarters(dat$V1, format='%m-%d-%Y')
。