基于字符串中的字母创建新列

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (10)

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

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

# Example code

library(tidyverse)

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

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

谢谢

提问于
用户回答回答于

一种可能性是:

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  

扫码关注云+社区

领取腾讯云代金券