r语言 - 使用if或ifelse和grepl标记数据框架



我有一个数据集,它捕获了两个电子学习模块的数据。电子学习模块由数字和字母组成的代码表示。例如1A21和2N34。

使用下面的代码,我能够创建一个列,我给模块代码一个名称。让作为人类的我更容易理解。

df$Module <- ifelse(grepl("1A21", df$ModuleCode), "R-101", "R-201")

代码像符咒一样有效。然而,我很好奇,如果您的数据框架开始捕获两个以上的电子学习模块的数据,它是如何工作的?如何解决这个问题呢?

如果这个问题是重复的,我提前道歉。

我不理解你的重命名逻辑。但是,按照我的示例,您可以为每个ModuleCode分配任何模块名称。

library(tidyverse)
df <- tibble::tibble(ModuleCode = c("1A21", "2N34", "3P04"))
df
# A tibble: 3 x 1
ModuleCode
<chr>     
1 1A21      
2 2N34      
3 3P04      
df %>% dplyr::mutate(Module = dplyr::case_when(
grepl("1A21",ModuleCode) ~ "R-101",
grepl("2N34", ModuleCode) ~ "R-201",
grepl("3P04", ModuleCode) ~ "R-301"
))
# A tibble: 3 x 2
ModuleCode Module
<chr>      <chr> 
1 1A21       R-101 
2 2N34       R-201 
3 3P04       R-301 

好,我们假设有3个代码:1A21, 2N34, 3D56,分别命名为"R-101" R-201" R-301"

df$Module <- ifelse(grepl("1A21", df$ModuleCode), "R-101",
ifelse(grepl("2N34", df$ModuleCode),  "R-201", "R-301")

因此,我们插入新的一级ifelse来代替第三个实参。

相关内容

  • 没有找到相关文章

最新更新