带条件循环的情况

问题描述 投票:0回答:1

我是R语言的新手。我在编写代码时写了一个案例,但我想进行参数化,因为并非总是n = 5。有可能吗?

iris 
iris$id_1 = sample(1:10)
iris$id_2 = sample(1:10)
iris$id_3 = sample(1:10)
iris$id_4 = sample(1:10)
iris$id_5 = sample(1:10)

x = 3

iris <- 
  iris %>%
  mutate(
    segmento = 
      case_when(
        id_5 >= x ~ 5,
        id_4 >= x ~ 4,
        id_3 >= x ~ 3,
        id_2 >= x ~ 2,
        id_1 >= x ~ 1,
      )
  )

问题是我并不总是5个“ id”。有时我有3个代码,它将是:

  iris <- 
      iris %>%
      mutate(
        segmento = 
          case_when(
            id_3 >= x ~ 3,
            id_2 >= x ~ 2,
            id_1 >= x ~ 1,
          )
      )

然后我需要对其进行参数化。

谢谢

r case case-when
1个回答
0
投票

基于描述,我们可以代替使用多个case_when,而可以这样做

 nm1 <- grep("^id_\\d+", names(df), value = TRUE)
 max.col(df[nm1] >= as.numeric(sub("id_", "", nm1))[col(df[nm1])], "first")
© www.soinside.com 2019 - 2024. All rights reserved.