尝试以一种易于进行时间序列的形式获取我的数据

Trying to get my data in a form that makes it easy to do time series

我从 public 数据库中提取了四个数据集。每个都是 xls 或 xlsx 格式。我已经完成并将它们转换为数据框,并清理了前两年有许多无关字段的数据。现在所有的数据都是相同的格式,我想弄清楚如何将它处理成一个文档,这样我就可以随着时间的推移对增长率或增长比例做线性模型。

这是我的GitHublink到我当前的实际过程。如果你想看看它并提供建议,我将感激不尽。 https://github.com/benjaminmbaker/Data

以下是我如何能够复制我的数据当前格式的近乎传真:

x <- list()
years <- c(2006,2008,2010,2012)

for (i in 1:length(years)) {
    UniqueID <- 1:10 # <- Not all numeric - Kept as character vector
    Name <- LETTERS[seq( from = 1, to = 10 )]
    Entity_Type <- factor("This","That")
    Data1 <- rnorm(10)     
    Data2 <- rnorm(10) 
    Data3 <- rnorm(10) 
    Data4 <- rnorm(10) 
    Year <- years[i]
    x[[i]] <- data.frame(UniqueID, Name, Entity_Type, Data1, Data2, Data3, Data4, Year)
}

list2env(setNames(x, paste0('x', years)), envir=.GlobalEnv)

现在我有四个数据集,我对它们进行绑定,使它们都在同一个集合中,这样我就可以对比率和比例进行 OLS 或 GLM。由于 GitHub 中的代码在我的数据集中创建了 0 的数量,我也在考虑为大于零的值创建一个虚拟变量,然后只是 运行 这些函数。

rbind(x2006,x2008,x2010,x2012)

我对此很陌生,所以我知道我犯了很多错误。我会继续阅读并努力解决这个问题,但任何方向都将不胜感激!

您需要使用 years[i] 从对象中将您想要的值粘贴到循环中。这会给你你想要的:

my_df <- data.frame() # make an empty data frame to fill 
years <- c(2006,2008,2010,2012)

for (i in 1:length(years)) {
    UniqueID <- 1:10
    Name <- LETTERS[seq( from = 1, to = 10 )]
    Entity_Type <- rep(c("This","That"), times=5) # do you want these to alternate?
    Data1 <- rnorm(10)     
    Data2 <- rnorm(10) 
    Data3 <- rnorm(10) 
    Data4 <- rnorm(10) 
    Year <- years[i]
    temp_df <- data.frame(UniqueID, Name, Entity_Type, Data1, Data2, Data3, Data4, Year)
    my_df <- rbind(my_df, temp_df) 
}

my_df