【问题标题】:How do I add a column to a data frame in R based on a partial string in another column?如何根据另一列中的部分字符串将列添加到 R 中的数据框中?
【发布时间】:2019-10-08 14:56:16
【问题描述】:

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

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

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

transform(teamfile, team.name

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

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

【问题讨论】:

    标签: r string transform return-value grepl


    【解决方案1】:

    如果我理解正确,您想从字符串中提取颜色,对吗?使用 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"
    

    【讨论】:

      【解决方案2】:

      df$new_column = unlist(strsplit(df$colname,'_'))[seq(1,nrow(df),2)] 会将颜色拆分到自己的列中。

      【讨论】:

        【解决方案3】:

        这会奏效。以 mtcars 为例数据集

        mtcars$colour<- NA
        for( i in c("Merc","Toyota","Ford","Mazda" )) {mtcars[ grepl( i  ,  rownames( mtcars), ) , "colour" ] <- i }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-01
          • 2017-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-04
          • 1970-01-01
          相关资源
          最近更新 更多