繁体   English   中英

如何基于R中另一列中的特定文本创建二进制列?

[英]How to create a binary column based on specific text in another column in R?

我正在R中工作,我需要根据播放器是否具有名称Mike(0表示否,1表示是)创建一个二进制列。 这是我到目前为止的代码,但是我不知道下一步该怎么做:

baseball$player_mike <- ifelse(baseball$player_name == "%Mike%", 1, 0)

baseball是数据帧, player_mike是二进制列,而player_name是运动员列表(具有其全名)。 任何关于我做错事情的指导都将受到感谢,谢谢!

自从您第一次与ifelse合作以来,这只是对事物的另一种tidyverse方法。

library(dplyr)
output <- baseball %>%
  dplyr::mutate(
    player_mike = ifelse(player_name == "Mike", 1, 0)
  )

如果您有实例mike以及Mike ,你可以做tolower(player_name)以适应这一点。

一个data.table替代方案:

require(data.table) # loads library

setDT(baseball) # sets baseball as a data.table

baseball[, player_mike := 0L] # creates a column and assigns 0 to all its values

baseball[grepl("Mike", player_name, ignore.case = TRUE), player_mike := 1L] 
       # filters rows where "Mike" appears in the player_name and 
       # assigns 1 to player_mike of those rows

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM