dplyr的条件变异

时间:2017-08-30 04:48:01

标签: r dplyr substr

我想在我的数据集中创建一个新列:i)如果单词本身以“vi”开头,则删除最后一个字符; ii)如果单词本身不以“vi”开头,则删除最后2个字符。我知道如何在R中工作,如下所示:

iris$Species <- as.character(iris$Species)
iris$Species_mod <- substr(iris$Species,
                           1,
                           ifelse(grepl('^vi',iris$Species),
                                  nchar(iris$Species)-1,
                                  nchar(iris$Species)-2))

但我很难解读dplyr中的mutateif_elsematches。任何人都可以开导我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

同样的想法,除非您明确需要将您的因子转换为字符串

rm -rf ~/Library/Application\ Support/VisualVM/8u40/config/Windows2Local/

答案 1 :(得分:0)

你可以尝试类似的东西:

iris %>%
  mutate(Species = as.character(Species))  %>%
  rowwise() %>%
  mutate(species2 = case_when(
    Species == 'vi%' ~ substr(Species, 0, nchar(Species) - 1),
    Species != 'vi%' ~ substr(Species, 0, nchar(Species) - 2)
  ))