R - How to apply different functions to certain rows in a column

后端 未结 3 637
南笙
南笙 2021-02-06 13:30

I am trying to apply different functions to different rows based on the value of a string in an adjacent column. My dataframe looks like this:

type    size
A            


        
3条回答
  •  遥遥无期
    2021-02-06 14:11

    This could do it like this, creating separate logical vectors for each type:

    As <- df$type == 'A'
    Bs <- df$type == 'B'
    Cs <- df$type == 'C'
    df$size2[As] <- 3*df$size[As]
    df$size2[Bs] <- df$size[Bs]
    df$size2[Cs] <- 2*df$size[Cs]
    

    but a more direct approach would be to create a separate lookup table like this:

    df$size2 <- c(A=3,B=1,C=2)[as.character(df$type)] * df$size
    

提交回复
热议问题