重新格式化下载的Excel数据

时间:2018-06-06 13:56:21

标签: r excel date formatting

我从经合组织网站下载了一些.xls格式的GDP数据。但是,要使此数据在R中可用,我需要将数据重新格式化为.csv文件。更具体地说,我需要第一列中的年,日和月,以及逗号之后我需要GDP值(例如:1990-01-01,234590)。

具有GDP值的列可以轻松复制和转置,但如何快速添加日期?有没有快速的方法来做到这一点,而无需手动添加日期?

Example output

感谢您的帮助!

最佳, 肖恩

PS。链接到(某个)特定OECD文件:https://ufile.io/8ogavhttps://stats.oecd.org/index.aspx?queryid=350#

PSS。我现在已将文件更改为:

Example 2

我希望将其转换为与示例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()));

1 个答案:

答案 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')