根据字符串中的字母创建新列

时间:2019-06-09 21:21:40

标签: r

我想根据不同列的字符串的第三个字母在R中创建一个新列。

我正在通过最近收集的数据进行工作,而不是要求参与者在性别上打勾,而是将其包括在匿名的主题ID中。现在,我想根据他们代码中的第三个字母(m / f)创建一个单独的参与者性别列。我环顾四周,但找不到解决方案。我设法发现我可以使用'separate(remove = FALSE)',并且如果可能的话,我想使用它,因为我习惯使用tidyverse。

# Example code

library(tidyverse)

a <- data_frame(SubjID = c("hgm9899", "lkf98988", "lkfm09078", "ujm987987"))

如果参与者的第三个字母是m,则我想在标题中添加一列,标题为M,如果是f,则添加F。

谢谢

1 个答案:

答案 0 :(得分:0)

一种可能是:

a %>%
 mutate(participant_sex = toupper(substr(SubjID, 3, 3)))

  SubjID    participant_sex
  <chr>     <chr>          
1 hgm9899   M              
2 lkf98988  F              
3 lkfm09078 F              
4 ujm987987 M