R:根据某些字符创建新的虚拟变量列

R: Creating new dummy variable column based on certain characters

我正在尝试使用 R 向我的数据框添加一个新的虚拟变量列。标准将基于篮球运动员的位置。

职位栏我还是想保留,仅供参考

虚拟变量,guard = 1 表示“PG”(控球后卫)和“SG”(得分后卫),= 0 表示“SF”、“PF”和“C”

此外,如果有两个位置组合(例如“SG-SF”),则仅使用第一个位置(例如“SG”)。

df <- data.frame (player = c("a","b","c","d","e","f","g"),
position = c("PF","SF","PG-SG", "SG-SF", "C", "PF", "SF-PF"))

非常感谢。

我们可以提取第一个单词然后使用%in%,然后使用as.integer or +`

强制转换为二进制
library(dplyr)
library(stringr)
df <- df %>% 
     mutate(guard = +(str_extract(position, "\w+") %in% c("PG", "SG")))

-输出

#   player position guard
#1      a       PF     0
#2      b       SF     0
#3      c  PG - SG     1
#4      d    SG-SF     1
#5      e        C     0
#6      f       PF     0
#7      g    SF-PF     0

或使用base R

df$guard <- +(sub("\s*-\s*.*", "", df$position) %in% c("PG", "SG"))

基于grepl

的另一个base R解决方案
df[["guard"]] <- +grepl("^PG|SG", df[["position"]])

正则表达式:grepl(returns bool for pattern found in string)for 'PG' or 'SG' at the beginning of a string in column ^ position+TRUE|FALSE 结果变成 1|0