求助:基于ID列新增Flag标记列的R语言实现
实现方法
首先先把你的示例数据转换成R可使用的数据框:
heroes <- data.frame( name = c("Spider-man", "Captain America", "Wolverine", "Iron Man", "Thor", "Otto Octavius", "Reed Richards"), ID = c("Secret Identity", "Public Identity", "Public Identity", "Public Identity", "No Dual Identity", "Secret Identity", "Public Identity"), stringsAsFactors = FALSE )
方法1:基础R的ifelse()函数
这是适合新手的基础方法,直接通过条件判断生成新列:
heroes$Flag <- ifelse(heroes$ID == "Secret Identity", 0, 1)
方法2:tidyverse/dplyr包实现
如果你习惯用tidyverse生态的工具,可以用dplyr::mutate()配合条件判断函数实现:
用ifelse
library(dplyr) heroes <- heroes %>% mutate(Flag = ifelse(ID == "Secret Identity", 0, 1))
用case_when(适配多条件场景)
如果之后需要扩展更多标记规则,case_when的可读性更强:
library(dplyr) heroes <- heroes %>% mutate(Flag = case_when( ID == "Secret Identity" ~ 0, TRUE ~ 1 ))
运行任意一种方法后,都会得到你期望的结果:
name ID Flag 1 Spider-man Secret Identity 0 2 Captain America Public Identity 1 3 Wolverine Public Identity 1 4 Iron Man Public Identity 1 5 Thor No Dual Identity 1 6 Otto Octavius Secret Identity 0 7 Reed Richards Public Identity 1
内容的提问来源于stack exchange,提问作者Benjamin Kinnie
相关产品推荐
相关产品推荐

