我有一个包含多个的数据集,我想characters从该sr列中提取前两个。最后,这些字符将存储在一个新列中。
基本上,我想要一个新列permit_type,其中包含srieAP和SP的前两个字符值MP。
我怎样才能做到这一点?
样本数据
structure(list(date_received = c("11/30/2021 ", "11/30/2021 ",
"11/30/2021 ", "11/30/2021 ", "11/30/2021 ", "11/17/2021 ",
"12/3/2021 ", "12/3/2021 ", "12/13/2021 "), date_approved = c("11/30/2021",
"11/30/2021", "11/30/2021", "11/30/2021", "11/30/2021", "11/17/2021",
"12/3/2021", "12/3/2021", "12/3/2021"), sr = c("AP-21-080", "SP-21-081",
"AP-21-082", "SP-21-083", "MP-21-084", "AP-21-085", "AP-21-086",
"MP-21-087", "SP-21-088"), permit = c("AP1766856 Classroom C",
"AP1766858 Classroom A", "AP1766862 Landscape Area", "AP1766864 Classroom B",
"AO1766867", "06-SE-2420566", "06-E-2425187", "", "06-SM-2424110"
)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"
))
Run Code Online (Sandbox Code Playgroud)
方法一
library(tidyverse)
df$permit_type= df%>% str_split_fixed(df$sr, "-", 2)
# Error
Error in str_split_fixed(., df$sr, "-", 2) :
unused argument (2)
Run Code Online (Sandbox Code Playgroud)
方法二
df$permit_type = df%>% str_extract(sr, "^.{2}")
# Error
Error in str_extract(., sr, "^.{2}") : unused argument ("^.{2}")
Run Code Online (Sandbox Code Playgroud)
方法三
df = df %>% mutate(permit_type = str_extract_all(sr, "\\b[a-z]{2}"))
# Returns permit_type with `Character(0)` values
Run Code Online (Sandbox Code Playgroud)
小智 5
我刚刚意识到,实际上,您可以简单地使用substr()函数来提取前两个字符。按照 akrun 的正确答案,例如,
df$permit_type<- substr(df$sr, 1, 2)
Run Code Online (Sandbox Code Playgroud)
如果这是有道理的话。