代码之家  ›  专栏  ›  技术社区  ›  glor

如何在报价单中的r中使用全局变量

  •  0
  • glor  · 技术社区  · 7 年前

    这些都是我自己写的(请看下面的代码),但我认为一定有某种方法可以在循环中实现这一点。如何编辑代码以编写类似以下内容的循环:

    i=10
    
    for (i in 10 to 80){
    
        j=i+5
    
        age_only$agecat[age_only$CI_Age.at.Adverse.Event>=i &        
                   age_only$CI_Age.at.Adverse.Event<j] <- "Between i and j-1"
    
        i=j
     }
    

    我不知道怎么用 i/j 在引号内。

    #
    age_only$agecat[age_only$CI_Age.at.Adverse.Event] <- "Above 85"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event<5]<-"Below 5"     
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=5 & age_only$CI_Age.at.Adverse.Event<10]<-"Between 5 to 9"     
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=10 & age_only$CI_Age.at.Adverse.Event<15]<- "Between 10 to 14"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=15 & age_only$CI_Age.at.Adverse.Event<20]<- "Between 15 to 19"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=20 & age_only$CI_Age.at.Adverse.Event<25]<- "Between 20 to 24"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=25 & age_only$CI_Age.at.Adverse.Event<30]<- "Between 25 to 29"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=30 & age_only$CI_Age.at.Adverse.Event<35]<- "Between 30 to 34"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=35 & age_only$CI_Age.at.Adverse.Event<40]<- "Between 35 to 39"    
      age_only$agecat[age_only$CI_Age.at.Adverse.Event>=40 & age_only$CI_Age.at.Adverse.Event<45]<-"Between 40 to 44"      
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=45 & age_only$CI_Age.at.Adverse.Event<50]<- "Between 45 to 49"    
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=50 & age_only$CI_Age.at.Adverse.Event<55]<-"Between 50 to 54"
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=55 & age_only$CI_Age.at.Adverse.Event<60]<- "Between 55 to 59"
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=60 & age_only$CI_Age.at.Adverse.Event<65]<- "Between 60 to 64"
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=65 & age_only$CI_Age.at.Adverse.Event<70]<- "Between 65 to 69"
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=70 & age_only$CI_Age.at.Adverse.Event<75]<- "Between 70 to 74"
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=75 & age_only$CI_Age.at.Adverse.Event<80]<- "Between 75 to 79"
    age_only$agecat[age_only$CI_Age.at.Adverse.Event>=80 & age_only$CI_Age.at.Adverse.Event<85]<- "Between 80 to 84"`
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Melissa Key    7 年前

    尝试 cut :

    age_only <- within(age_only, {
        agecat = cut(CI_Age.at.Adverse.Event, breaks = c(seq(0, 85, 5), 120))
    
       levels(agecat) <- sub("(\\(|\\[)(\\d*), ?(\\d*)(\\]|\\))", "Between \\2 and \\3",levels(agecat)) 
    })
    

    within 让我修改数据帧,而不必说 age_only$ 很多次。这个 sub 命令将转换级别 (5,10] 至“5至10”。