R:基于某些字符创建新的虚拟变量列

R:基于某些字符创建新的虚拟变量列,r,dummy-variable,R,Dummy Variable,我试图使用R向数据帧添加一个新的虚拟变量列。标准将基于篮球运动员的位置 我仍然希望保留“职位”列,作为参考 虚拟变量,guard=1表示“PG”(控球后卫)和“SG”(得分后卫),guard=0表示“SF”、“PF”和“C” 此外,如果组合了两个位置(例如“SG-SF”),则仅使用第一个位置(例如“SG”) df我们可以提取第一个单词,然后在%中使用%,然后强制使用as.integer或+` library(dplyr) library(stringr) df <- df %>%

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

我仍然希望保留“职位”列,作为参考

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

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


df我们可以提取第一个单词,然后在%
中使用
%,然后强制使用
as.integer或
+`

library(dplyr)
library(stringr)
df <- df %>% 
     mutate(guard = +(str_extract(position, "\\w+") %in% c("PG", "SG")))

或使用
base R

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

df$guard另一个基于
grepl

df[["guard"]] <- +grepl("^PG|SG", df[["position"]])

<代码> DF[[卫兵] ]在您的逻辑中,“SG”被重复用于守护1和0代码> DF$Gub感谢HEAP,这完全有效!@ USE1582004请考虑检查
df$guard <- +(sub("\\s*-\\s*.*", "", df$position) %in% c("PG", "SG"))
df[["guard"]] <- +grepl("^PG|SG", df[["position"]])