相关疑难解决方法(0)

R中嵌套ifelse语句的替代方法

假设我们有以下数据.行代表一个国家/地区,而columns(in05:in09)表示该国家/地区是否存在于给定年份(2005:2009)中感兴趣的数据库中.

id <- c("a", "b", "c", "d")
in05 <- c(1, 0, 0, 1)
in06 <- c(0, 0, 0, 1)
in07 <- c(1, 1, 0, 1)
in08 <- c(0, 1, 1, 1)
in09 <- c(0, 0, 0, 1)
df <- data.frame(id, in05, in06, in07, in08, in09)
Run Code Online (Sandbox Code Playgroud)

我想创建一个变量firstyear,指示该国家在数据库中出现的第一年.现在我做以下事情:

df$firstyear <- ifelse(df$in05==1,2005,
    ifelse(df$in06==1,2006,
        ifelse(df$in07==1, 2007,
            ifelse(df$in08==1, 2008,
                ifelse(df$in09==1, 2009,
                    0)))))
Run Code Online (Sandbox Code Playgroud)

上面的代码已经不是很好了,我的数据集包含了很多年.是否有替代方法,使用*apply函数,循环或其他东西来创建此firstyear变量?

loops if-statement r nested-loops

26
推荐指数
4
解决办法
6304
查看次数

标签 统计

if-statement ×1

loops ×1

nested-loops ×1

r ×1