【问题标题】:Linking data to date将数据链接到日期
【发布时间】:2015-11-08 13:44:36
【问题描述】:

我正在尝试使用 r 计算每个工人的资本 (k)。 我们使用的是真实数据,所以我使用的是基于 .csv 文件的日期而不是 t。 日期已正确加载为

> date[1]
[1] "2009/07/01"

> date[3]
[1] "2011/07/01"

但是这部分似乎对我不起作用

for (date in 2:7){
y[date] <- k[date-1]^alpha
k[date] <- (1-delta-n[date])*k[date-1]+s*y[date]
}

完整代码在这里:

```{r}
labour <- read_csv("LF.csv")
date <- labour$date
# Defining parameters
alpha <- .4 #After several hours discussion with Pardy
n <- labour$growth
delta <- 0.041
g <- 0.016
s <- 0.274
k <- rep(NA, 7)
y <- rep(NA, 7)
kappa <- (s/(n[1] + delta))^(1/(1-alpha))
k[1] <- kappa
y[1] <- k[1]^alpha
for (date in 2:7){
y[date] <- k[date-1]^alpha
k[date] <- (1-delta-n[date])*k[date-1]+s*y[date]
}
data.frame(date = date[1:7], k ) %>% melt(id = "date") %>% 
ggplot(aes(x = date, y = value, colour = variable,group = 1)) +
geom_line() +
ylim(0, 18)
```

【问题讨论】:

  • 你的意思是for (eachdate in date[2:7])?现在,您在该循环中使用的每个日期只有 2、3、4、5、6 或 7
  • 是的,这就是我想要的。我正在尝试使用 date[1],date[2] 等代替 t 将 k 和 y 链接到 [date]
  • 您应该为该循环变量使用一个新名称 - 它正在覆盖您的向量 date

标签: r date csv


【解决方案1】:

您的代码有几个问题,这对我来说是最明显的。

您应该包括一些数据(即粘贴到dput(head(labour)) 的输出中)和预期的输出,以便更容易排除其余部分的问题。

您使用date 作为循环变量,但还有一个名为 date 的变量会被它更改:

date <- c("2009/07/01", "2009/07/03", "2011/07/05")
date

for (date in 2:3){
  print(date)
}

date

回想一下,循环变量是全局分配的,与内部函数变量不同。你应该重命名那个循环变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2023-02-16
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多