如何解决有没有办法将分类变量转换为数字R?
我在 R 上有一个数据集(从 Excel 导入),它有一列用于分类变量“性别”,响应为男性和女性,我想将它们更改为 1s 和 2s,即。男=1,女=2,请问怎么办? (旁注:我正在使用 RStudio)
解决方法
其实有很多方法可以做到:
Dim PhaseUri As New System.Uri(http://www.example.com/My_Folder)
Dim PhaseURL As String = PhaseUri.Host.ToString
If My.Computer.Network.IsAvailable AndAlso My.Computer.Network.Ping(PhaseURL,1000) Then
Else
End If
或
as.integer(factor(x,levels = c("male","female")))
或
c(1,2)[1 + (x == "female")]
或
match(x,c("male","female"))
,
as.numeric(factor(x))
会起作用。当然有很多方法可以给这只猫剥皮。
更好的可能只是
factor(x)
虽然我不确定你的下一步是什么。
,您可以使用 replace
函数将一个值替换为另一个值。这里用 1 或 2(用“”,它将是一个字符值)。
这里有一个例子:
x <- c("male","female","male","male")
x <- replace(x,x=="male","1")
x <- replace(x,x=="female","2")
x
,
可以定义自定义函数,然后使用 lapply()
应用它,该函数对特定的 df
列执行操作:
# some random data #
df <- data.frame(sex=c('male','female','male','female'))
encode_fun <- function(x){
if(x=='female'){
return(2)
} else if(x=='male'){
return(1)
} else {
return(NA)
}
}
df$sex <- do.call(rbind,lapply(df$sex,encode_fun))
此外,通过结合 mutate()
函数来执行转换和 case_when()
作为来自 library(dplyr)
的逻辑运算符的函数:
library(dplyr)
df %>%
dplyr::mutate(sex = case_when(sex == 'male' ~ 1,sex == 'female' ~ 2))
字符串方法可以通过使用 str_replace()
中的 library(stringr)
函数来完成
library(stringr)
library(dplyr)
df %>%
dplyr::mutate(sex = str_replace(sex,'^male','1')) %>%
dplyr::mutate(sex=str_replace(sex,'^female$','2')) %>%
dplyr::mutate(sex = as.numeric(sex))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。