我有一个包含许多字段的数据框。其中一个字段是“Sample”,由于各种输入,我的样本使用各种格式命名。以下是一些例子:
"12" "250" "1248" "1_100111" "16_100111" "125_081811" "1249_100111"
以上示例代表了大部分样本。我想将所有样本更改为4位数格式,以便轻松排序。上述例子的最终结果将是:
"0012" "0250" "1248" "0001" "0016" "0125" "1249"
因此,在某些情况下必须添加零,而在其他情况下,必须切断日期标记。 更改是在数据框的上下文中进行并以相同的格式返回非常重要。
答案 0 :(得分:5)
你走了:
x <- c("12", "250", "1248", "1_100111", "16_100111", "125_081811", "1249_100111")
sprintf(as.numeric(gsub("(\\d*)_*\\d*$", "\\1", x)), fmt="%04d")
[1] "0012" "0250" "1248" "0001" "0016" "0125" "1249"
答案 1 :(得分:4)
sprintf("%04s",
sub("_.+", "", c("12", "250", "1248", "1_100111", "16_100111",
"125_081811", "1249_100111" ) )
[1] "0012" "0250" "1248" "0001" "0016" "0125" "1249"