R 如何将列中的多个字符串替换为数字
我相信这是一个简单的问题,但在网上找不到任何可以澄清的东西。我正在R中处理一个CSV文件,有一个标有性别的列,有两个级别“M”和“F”。我试图更改变量,使F=1和M=0,两者都是数字类型。我需要插入什么代码才能更改性别 我已尝试使用gsub、替换函数和以下格式的代码:R 如何将列中的多个字符串替换为数字,r,replace,gsub,R,Replace,Gsub,我相信这是一个简单的问题,但在网上找不到任何可以澄清的东西。我正在R中处理一个CSV文件,有一个标有性别的列,有两个级别“M”和“F”。我试图更改变量,使F=1和M=0,两者都是数字类型。我需要插入什么代码才能更改性别 我已尝试使用gsub、替换函数和以下格式的代码: Test[Test$Gender == "F",]$Gender = 1 当我输入上面的代码时,它返回错误消息: [一种可能的方法中的错误,通过操纵性别的水平: #dummy data: Test = data.frame(Ge
Test[Test$Gender == "F",]$Gender = 1
当我输入上面的代码时,它返回错误消息:
[一种可能的方法中的错误,通过操纵性别的水平:
#dummy data:
Test = data.frame(Gender = factor(sample(c('M','F'), replace=T, size=10)))
# solution:
Test$Gender = as.integer(factor(Test$Gender, levels=c('F','M')))-1
您可以使用级别
选择哪个级别(M或F)获得第一个值。一种可能的方法是通过操纵性别的级别
:
#dummy data:
Test = data.frame(Gender = factor(sample(c('M','F'), replace=T, size=10)))
# solution:
Test$Gender = as.integer(factor(Test$Gender, levels=c('F','M')))-1
您可以使用levels
选择哪个级别(M或F)获得第一个值。使用Tidyverse
方法:
library(tidyverse)
Test <- data.frame(Gender=c("F","M","F","M"))
Test %>%
mutate(Gender_mod=case_when(
Gender=="F" ~ 1,
Gender=="M" ~ 0
)
或者您可以决定替换原始变量中的值:
Test %>%
mutate(Gender=as.numeric(str_replace_all(string=Gender,pattern=c("F","M"),replacement=c("1","0"))))
这是输出:
Gender
1 1
2 0
3 1
4 0
使用Tidyverse
方法:
library(tidyverse)
Test <- data.frame(Gender=c("F","M","F","M"))
Test %>%
mutate(Gender_mod=case_when(
Gender=="F" ~ 1,
Gender=="M" ~ 0
)
或者您可以决定替换原始变量中的值:
Test %>%
mutate(Gender=as.numeric(str_replace_all(string=Gender,pattern=c("F","M"),replacement=c("1","0"))))
这是输出:
Gender
1 1
2 0
3 1
4 0
明白了,非常感谢!我必须使用Gender=gsub(2,0,Gender),然后使用Gender=as.numeric(Gender),但它现在看起来应该是这样的。谢谢你的帮助!gsub
是用于字符向量的,这里有一个更简单的例子,你在处理一个因子。所以仅仅操纵级别是一个很好的方法。明白了,非常感谢!我不得不使用Gender=gsub(2,0,Gender),然后使用Gender=as.numeric(Gender),但它现在看起来应该是这样的。感谢您的帮助!gsub
是用于字符向量的,这里有一个更简单的例子,您处理的是一个因子。因此,仅操纵级别是一个很好的方法。Test%>%mutate(Gender=ifelse(Gender=“M”,1,0))
Test%>%mutate(Gender=ifelse(Gender=“M”,1,0))