我正在尝试创建一个新的变量“ 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
答案 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
函数