小编Kat*_*ney的帖子

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
查看次数

在 R 中循环变量名

我最近转向 R,正在努力寻找与以下内容等效的 R:循环使用公共前缀加数字(var1、var2、...、varn)命名的变量。

假设我有一个数据集,其中每一行都是一个商店,每一列都是该商店在第 1 个月、第 2 个月...第 6 个月的收入值。一些虚构的数据,例如:

store = c("a", "b", "c", "d", "c")
rev1 = c(500, 200, 600, 400, 1200) 
rev2 = c(260, 100, 450, 45, 1300)
rev3 = c(500, 150, 610, 350, 900)
rev4 = c(480, 200, 600, 750, 1000)
rev5 = c(500, 68, 750, 350, 1200)
rev6 = c(510, 80, 1000, 400, 1450)
df = data.frame(store, rev1, rev2, rev3, rev4, rev5, rev6) 
Run Code Online (Sandbox Code Playgroud)

我正在尝试做类似以下的事情:

varlist <- paste("rev", 1:6)  #create list of variables rev1-rev6 #
for …
Run Code Online (Sandbox Code Playgroud)

loops r

3
推荐指数
1
解决办法
9820
查看次数

标签 统计

loops ×2

r ×2

if-statement ×1

nested-loops ×1