我有这样的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。
答案 0 :(得分:2)
如果你不适合正则表达式,你也可以使用strsplit。
do.call('rbind',lapply(strsplit(c("Subject 10010-001", "Subject 20010-002"),"-"),`[[`,2))
此处strsplit会将您的数据与&#34; - &#34; ,然后我们使用lapply
和[[
从strsplit输出中获取第二项。可以使用do.call
将最终输出放入列式表示中,您也可以在此处选择unsplit
。上面的输出是带有字符数据的矩阵。您可以使用data.frame将其置于所需的格式中。
或更好
sapply(strsplit(c("Subject 10010-001", "Subject 20010-002"),"-"),`[[`,2)
这里应用了相同的逻辑但由于我们不必绑定任何内容,因此我们使用sapply
代替lapply
,因此它不那么麻烦。
您现有的正则表达式似乎是正确的,唯一的检查是我认为您不应该使用as.numeric
,如果您想 00 在前面。