首页 > 解决方案 > 如何根据另一列中的部分字符串将一列添加到 R 中的数据框中?

问题描述

我正在尝试基于 R 中另一列中的部分字符串匹配创建一个具有返回值的新列。第一列是由颜色和位置表示的篮球队(例如,yellow_center、red_guard、orange_forward 等)。我要添加的列是基于颜色的团队名称列。在此示例中,我希望根据行中前面的团队/位置字符串返回黄色、橙色或红色值。我只会使用 4 或 5 种颜色。

我弄乱了 grep、grepl 和转换函数,但我没有得到预期的答案。

我试过这个来获取第一个字母,但它似乎没有创建列。

转换(teamfile,team.name <-substr(teamfile$player_position,1)

我已经尝试了 grepl 几种方法,但没有保存它们。

我希望看到的是一个全新的列,其中包含“黄色”或“红色”或“橙色”,基于 player_position 列值中可能存在的任何颜色。

标签: rstringtransformreturn-valuegrepl

解决方案


如果我理解正确,您想从字符串中提取颜色,对吗?使用 stringr 包,您可以使用

library(stringr)
teamfile$teamname <- str_extract(teamfile$player_position,  "^.*(?=\\_)") 
# this regex extraxts everything up to a "_"
# so it extracts "orange" based on "orange_guard", "orange_center" or "orange_whatever"

推荐阅读