首页 > 解决方案 > R:根据某些字符创建新的虚拟变量列

问题描述

我正在尝试使用 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"))

非常感谢。

标签: rdummy-variable

解决方案


另一种base R解决方案基于grepl

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

正则表达式:(返回字符串中找到的模式的布尔值)用于列grepl中字符串开头的“PG”或“SG” (将结果转换为)^position+TRUE|FALSE1|0


推荐阅读