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

假设我们有以下数据。这些行代表一个国家,而列(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)

我想创建一个变量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)))))

上面的代码已经不是很好,并且我的数据集包含了很多年。是否存在使用*apply函数,循环或其他方法创建此firstyear变量的替代方法

大卫·阿伦堡

您可以使用 max.col

indx <- names(df)[max.col(df[-1], ties.method = "first") + 1L]
df$firstyear <- as.numeric(sub("in", "20", indx))
df
#   id in05 in06 in07 in08 in09 firstyear
# 1  a    1    0    1    0    0      2005
# 2  b    0    0    1    1    0      2007
# 3  c    0    0    0    1    0      2008
# 4  d    1    1    1    1    1      2005

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中多个ifelse的替代方法

来自分类Dev

加快嵌套ifelse语句-R

来自分类Dev

R中嵌套ifelse语句中的值丢失

来自分类Dev

R中的ifelse语句

来自分类Dev

R中的ifelse语句

来自分类Dev

替代带有多个条件的嵌套ifelse语句的长列表

来自分类Dev

替代带有多个条件的嵌套ifelse语句的长列表

来自分类Dev

R中多个ifelse的替代方案

来自分类Dev

PHP中许多ifelse语句的替代解决方案

来自分类Dev

嵌套在熊猫中的ifelse替代品

来自分类Dev

R:改进嵌套的ifelse语句和多种模式

来自分类Dev

基于r中条件向量的ifelse语句

来自分类Dev

R的Summary函数中的Ifelse语句:dplyr

来自分类Dev

在 R 中的 ifelse 语句中是唯一的

来自分类Dev

在同一个表中嵌套 Ifelse 语句

来自分类Dev

Oracle SQL:Select语句中嵌套REPLACE()的替代方法?

来自分类Dev

切换/嵌套IIf语句的替代方法

来自分类Dev

如果语句在R中嵌套

来自分类Dev

R中的嵌套粘贴语句

来自分类Dev

for 循环中的嵌套 ifelse 语句

来自分类Dev

JavaScript中if else语句的替代方法

来自分类Dev

查看查询中 SET 语句的替代方法

来自分类Dev

什么可以替代 R 中的嵌套循环

来自分类Dev

python中嵌套for循环的替代方法

来自分类Dev

R:由`ifelse()`嵌套

来自分类Dev

R中for循环的替代方法?

来自分类Dev

R中for循环的替代方法

来自分类Dev

R中for循环的替代方法

来自分类Dev

许多if语句的替代方法