基于R中预先存在的变量的值将值分配给新变量的迭代方法

时间:2019-06-16 04:14:01

标签: r

我正在尝试创建一个新的变量“ Timeelapsed”,该变量用于测量从研究开始以来每个观察值所经过的时间-这个新变量基于先前存在的变量“ Year”。

我创建了一个程序,为每个观察结果输出自研究开始以来经过的正确时间。但是,此代码效率低下,并使用重复的if语句。我尝试使用嵌套的for / if循环使代码更有效,但是我的新程序都无法正常工作。我希望能帮助我提高代码效率。

工作代码:

Timeelasped <- rep(NA, length((data$Year)))

for (i in 1:nrow(data)) {
  if(data$Year[i]==2007) {
    Timeelasped[i] <- 0
  }
  if(data$Year[i]==2008) {
    Timeelasped[i] <- 1
  }
  if(data$Year[i]==2009) {
    Timeelasped[i] <- 2
  }
}

当前输出:

  

经过时间   0 0 0 0 1 1 1 1 2 2 2 2

1 个答案:

答案 0 :(得分:0)

如果年份只是每个观察值而不是日期/时间对象的数值(写TRUE时得到is.numeric(data1[,'year'])吗?),那么它将起作用,不需要任何复杂的东西! / p>

# dummy data
data1 <- data.frame('year' = c(2007, 2008, 2008, 2009))

# solution 
data1[,'elapsed'] <- data1[,'year'] - 2007

输出:

  year elapsed
1 2007       0
2 2008       1
3 2008       1
4 2009       2  

如果是日期/时间,请查看difftime函数