2

我的数据 (master_data) 中有一个名为 unit 的列。

master_data$unit <- c("Tonnes","1000 Tonnes","Numbers","1000 Numbers")

我想转换此列,以便我得到这个

master_data$unit <- c("1 Tonnes","1000 Tonnes","1 Numbers", "1000 Numbers")

我想这样做,以便我可以将单位分成两列,1/1000 和吨/数字

我试图找到单位的长度,然后使用粘贴命令,但它不起作用

master_data$unit_len <- sapply(strsplit(master_data$unit, " "), length)


if (master_data$unit_len == 1) {
  paste("1 ", master_data$unit, sep="")
}

但是,这不起作用。

4

2 回答 2

4

检查是否unit以数字开头。如果没有,paste 1一开始

unit <- c("Tonnes","1000 Tonnes","Numbers","1000 Numbers")
ifelse(grepl("^\\d", unit), unit, paste("1", unit))
#[1] "1 Tonnes"     "1000 Tonnes"  "1 Numbers"    "1000 Numbers"
于 2019-07-31T20:50:58.717 回答
3

我们可以使用sub. 这匹配一个字符串,其中所有字符都是“单词字符”并替换为“1(匹配的字符)”:

unit <- c("Tonnes","1000 Tonnes","Numbers","1000 Numbers")

sub('^(\\w+)$', '1 \\1', unit)
# [1] "1 Tonnes"     "1000 Tonnes"  "1 Numbers"    "1000 Numbers"
于 2019-07-31T21:01:46.530 回答