为特定观察添加数字
add numbers to specific observations
我有几个正在使用的 ID。我想为 id 中破折号后有 1 个整数的值添加一个前导零。这是示例数据。我
id
2034-5
1023-12
1042-22
1231-9
我想要这个:
id
2034-05
1023-12
1042-22
1231-09
我试过了,但没用。有什么建议吗?
x <-sprintf("%02d", df$id)
您实际上可以在此处使用 sub
作为基础 R 选项:
df$id <- sub("-(\d)$", "-0\1", df$id)
df
id
1 2034-05
2 1023-12
3 1042-22
4 1231-09
数据:
df <- data.frame(id=c("2034-5", "1023-12", "1042-22", "1231-9"), stringsAsFactors=FALSE)
要使用 sprintf
,您必须将两个数字分开,对第二个数字使用 sprintf
,然后再次组合它们。
library(dplyr)
library(tidyr)
df %>%
separate(id, c('id1', 'id2')) %>%
mutate(id2 = sprintf('%02s', id2)) %>%
unite(id, id1, id2, sep = '-')
# id
#1 2034-05
#2 1023-12
#3 1042-22
#4 1231-09
strsplit
和 sprintf
来自 base R
的选项
df$id <- sapply(strsplit(df$id, "-"), function(x)
do.call(sprintf, c(as.list(x), fmt = "%s-%02s")))
df$id
#[1] "2034-05" "1023-12" "1042-22" "1231-09"
我有几个正在使用的 ID。我想为 id 中破折号后有 1 个整数的值添加一个前导零。这是示例数据。我
id
2034-5
1023-12
1042-22
1231-9
我想要这个:
id
2034-05
1023-12
1042-22
1231-09
我试过了,但没用。有什么建议吗?
x <-sprintf("%02d", df$id)
您实际上可以在此处使用 sub
作为基础 R 选项:
df$id <- sub("-(\d)$", "-0\1", df$id)
df
id
1 2034-05
2 1023-12
3 1042-22
4 1231-09
数据:
df <- data.frame(id=c("2034-5", "1023-12", "1042-22", "1231-9"), stringsAsFactors=FALSE)
要使用 sprintf
,您必须将两个数字分开,对第二个数字使用 sprintf
,然后再次组合它们。
library(dplyr)
library(tidyr)
df %>%
separate(id, c('id1', 'id2')) %>%
mutate(id2 = sprintf('%02s', id2)) %>%
unite(id, id1, id2, sep = '-')
# id
#1 2034-05
#2 1023-12
#3 1042-22
#4 1231-09
strsplit
和 sprintf
来自 base R
df$id <- sapply(strsplit(df$id, "-"), function(x)
do.call(sprintf, c(as.list(x), fmt = "%s-%02s")))
df$id
#[1] "2034-05" "1023-12" "1042-22" "1231-09"