我有一个包含字符串列的数据帧,并想将它们的子串提取到一个新列中。
以下是一些示例代码和数据,显示我想要获取 id
列最后一个下划线字符后面的字符串,以创建一个 new_id
列。该 id
列条目始终具有 2 个下划线字符,并且我总是想要最后的子串。
df = data.frame( id = I(c("abcd_123_ABC","abc_5234_NHYK")), x = c(1.0,2.0) )
require(dplyr)
df = df %>% dplyr::mutate(new_id = strsplit(id, split="_")[[1]][3])
我原本希望strsplit依次作用于每一行。
然而,new_id
列在每一行中只包含ABC
,我想在第1行中有ABC
,在第2行中有NHYK
。您知道为什么会出现问题,并且如何实现我想要的结果吗?
strsplit
。[[1]]
总是获取列表的第一个元素。 - Lloyd Christmasdf$newVar <- sub(".*_([A-Z]+)$", "\\1", df$id)
。 - lmo