【问题标题】:How to insert "1 " in the start for a column in R?如何在 R 中的列的开头插入“1”?
【发布时间】:2019-12-09 10:23:18
【问题描述】:

我的数据 (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="")
}

但是,这不起作用。

【问题讨论】:

    标签: r regex string units-of-measurement pad


    【解决方案1】:

    检查unit 是否以数字开头。如果没有,paste1开头

    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"
    

    【讨论】:

      【解决方案2】:

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

      unit <- c("Tonnes","1000 Tonnes","Numbers","1000 Numbers")
      
      sub('^(\\w+)$', '1 \\1', unit)
      # [1] "1 Tonnes"     "1000 Tonnes"  "1 Numbers"    "1000 Numbers"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-16
        • 2018-01-27
        • 2019-12-29
        • 1970-01-01
        • 1970-01-01
        • 2019-06-28
        • 2010-12-31
        • 1970-01-01
        相关资源
        最近更新 更多