【问题标题】: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 R的sub
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)