微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法将分类变量转换为数字R?

如何解决有没有办法将分类变量转换为数字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 举报,一经查实,本站将立刻删除。