根据字符串的第一个值分隔列

时间:2018-11-07 19:56:13

标签: r string startswith

我有一个ID变量,我试图根据其前缀为1或2将其分为两列。

我的数据示例是:

STR_ID
1434233
2343535
1243435
1434355

我尝试了无数种方法来尝试根据它们的前缀将这些变量分为几列,但是似乎无法弄清楚。关于如何执行此操作的任何想法?预先谢谢你。

1 个答案:

答案 0 :(得分:2)

我们通过提取“ STR_ID”的第一个字符/数字并将其substr提取为“宽”格式,用spread创建分组变量

library(tidyverse)
df1 %>% 
   group_by(grp = paste0('grp', substr(STR_ID, 1, 1))) %>% 
   mutate(i = row_number()) %>% 
   spread(grp, STR_ID) %>%
   select(-i)
# A tibble: 3 x 2
#     grp1    grp2
#    <int>   <int>
#1 1434233 2343535
#2 1243435      NA
#3 1434355      NA

数据

df1 <- structure(list(STR_ID = c(1434233L, 2343535L, 1243435L, 1434355L
 )), class = "data.frame", row.names = c(NA, -4L))