用数字替换字符列
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在前面。
我有一个这样的 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在前面。