用数字替换字符列

Substitute a character column with numbers

我有一个这样的 df:

df <- 
ID                  ID2
Subject 10010-001   NA
Subject 20010-002   NA

我想删除 - 之前的所有内容并保留数字。输出应该是这样的。

df <-
ID                  ID2
Subject 10010-001   001
Subject 20010-002   002

我尝试使用 gsub,但仍然没有正确使用。这是我试过的。

df$ID2 <- as.numeric(gsub("Subject \d+-","",as.character(df$ID)))

我正在使用 RStudio。

如果您不适合正则表达式,您也可以使用 strsplit 执行此操作。

do.call('rbind',lapply(strsplit(c("Subject 10010-001", "Subject 20010-002"),"-"),`[[`,2))

此处 strsplit 将使用“-”拆分您的数据,然后我们使用 lapply[[ 从 strsplit 输出中获取第二项。可以使用 do.call 将最终输出放入列式表示中,您也可以在此处选择 unsplit 。上面的输出是一个带有字符数据的矩阵。您可以使用 data.frame 将其放入所需的形式。

更好如@thelatemail

所建议
 sapply(strsplit(c("Subject 10010-001", "Subject 20010-002"),"-"),`[[`,2)

这里应用了相同的逻辑,但它没有那么麻烦,因为您不必绑定任何东西,因为我们使用 sapply 而不是 lapply

你现有的正则表达式似乎是正确的,唯一的检查是我认为你不应该在那里使用 as.numeric 如果你想要 00在前面。