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

如何基于另一列的级别在列上粘贴字符串向量?

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

    library(dplyr)
    q46 <- data_frame(
      coop=sample(c('fish','dairy','legumes'),20,replace=T),
      name=sample(c('Leader','President','Agronomist'),20,replace = T)
    )
    y <- c('.f','.d','.l')
    coop_split <- split(q46, q46$coop)
    
    lapply(split(q46,q46$coop), function(x) {
      paste0(q46$name,y[i])})
    

     name
    
     Leader.f
    
     President.f
    
     Leader.d
    

    我并没有被这种方法困住;是否有自动执行此操作的功能?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   B Williams    7 年前

    为什么不使用case\u when或ifelse?

    library(tidyverse)
    q46 %>% 
        mutate(name2 = case_when(coop=='legumes' ~paste0(name, ".l"),
                                 coop=='fish' ~paste0(name,".f"),
                                 coop=='dairy' ~paste0(name, ".d")))
    
    # A tibble: 20 x 3
      coop       name        name2
     <chr>      <chr>        <chr>
     1 legumes     Leader     Leader.l
     2    fish     Leader     Leader.f
     3 legumes  President  President.l
     4 legumes  President  President.l
     5   dairy     Leader     Leader.d
     6 legumes Agronomist Agronomist.l
     7 legumes  President  President.l
     8    fish Agronomist Agronomist.f
     9    fish     Leader     Leader.f
    10 legumes     Leader     Leader.l
    11 legumes Agronomist Agronomist.l
    12 legumes Agronomist Agronomist.l
    13 legumes  President  President.l
    14    fish Agronomist Agronomist.f
    15   dairy     Leader     Leader.d
    16   dairy  President  President.d
    17 legumes Agronomist Agronomist.l
    18 legumes  President  President.l
    19 legumes     Leader     Leader.l
    20 legumes Agronomist Agronomist.l