【问题标题】:How to convert a letter in a string to a number in R如何将字符串中的字母转换为R中的数字
【发布时间】:2017-04-18 22:12:35
【问题描述】:

我有一个数据集,其中包含一列值 V01、V02、V03、...、V91 以及其他值,例如 E000、E001、402 等。如何在不将该列转换为向量的情况下将该列中的 V 值替换为 1000 之类的数字?

(我不能使用 as.numeric 函数,因为我不希望我的“E...”值变为 NA 并与“V...”值混合。)

示例: 我的数据看起来像: {V01 527 E54 64.5}

我希望它看起来像: {100001 527 E54 64.5}

谢谢!

【问题讨论】:

    标签: r string numbers type-conversion


    【解决方案1】:

    你可以使用gsub:

    x <- c("V01","527","E54", "64.5")
    gsub("V","1000",x)
    
    [1] "100001" "527"    "E54"    "64.5" 
    

    编辑要应用于一列:

    df <- data.frame(col1=c("V01","527","E54", "64.5"),col2=2)
    df$col1 <- gsub("V","1000",df$col1 )
    df
        col1 col2
    1 100001    2
    2    527    2
    3    E54    2
    4   64.5    2
    

    【讨论】:

    • 感谢您的发言。我是这个网站的新手!
    【解决方案2】:

    我们可以使用tidyverse

    library(tidyverse)
    df %>% 
          mutate(col1 = str_replace(col1, 'V', 1000))
    #    col1 col2
    #1 100001    2
    #2    527    2
    #3    E54    2
    #4   64.5    2
    

    或者使用来自base Rsub

    df$col1 <- sub("V", 1000, df$col1)
    df$col1
    #[1] "100001" "527"    "E54"    "64.5"  
    

    数据

    df <- data.frame(col1=c("V01","527","E54", "64.5"),col2=2) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多