使用 if 或 ifelse 和 grepl 标记数据框
Label a dataframe with if or ifelse and grepl
我有一个数据集,可以捕获两个电子学习模块的数据。
电子学习模块用由数字和字母组成的代码表示。例如 1A21 和 2N34.
使用以下代码,我可以创建一个列,在其中为模块代码命名。让我作为一个人更容易理解。
df$Module <- ifelse(grepl("1A21", df$ModuleCode), "R-101", "R-201")
这段代码很有魅力。但是,我很好奇,如果您的数据框开始捕获两个以上电子学习模块的数据,它是如何工作的?如何解决这个问题?
如果这个问题重复,我提前道歉。
好的,假设有 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,而不是第三个参数。
我不明白你的重命名逻辑。但是按照我的示例,您可以为每个 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
我有一个数据集,可以捕获两个电子学习模块的数据。 电子学习模块用由数字和字母组成的代码表示。例如 1A21 和 2N34.
使用以下代码,我可以创建一个列,在其中为模块代码命名。让我作为一个人更容易理解。
df$Module <- ifelse(grepl("1A21", df$ModuleCode), "R-101", "R-201")
这段代码很有魅力。但是,我很好奇,如果您的数据框开始捕获两个以上电子学习模块的数据,它是如何工作的?如何解决这个问题?
如果这个问题重复,我提前道歉。
好的,假设有 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,而不是第三个参数。
我不明白你的重命名逻辑。但是按照我的示例,您可以为每个 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