是否有将分类变量转换为连续变量的 R 函数?

Posted

技术标签:

【中文标题】是否有将分类变量转换为连续变量的 R 函数?【英文标题】:Is there an R function which converts categorical variables into continuous variables? 【发布时间】:2020-10-10 00:56:15 【问题描述】:

我的数据框格式如下:

索引:拥有的宠物数量:年龄范围

    10 : 30 秒

    2 : 50 秒

    4 : 60 秒

    6 :

    9 : 70 秒

等等。本质上,年龄范围的数量是

【问题讨论】:

从字符串中搜索extract number,你会发现很多相关的问题和答案。常用方法包括stringr::str_extract_all和/或sub/gsub/gregexpr。您需要这个才能按数字对它们进行数字排序(因为字典排序可能/将失败)。 或者,如果它已经是factor 并且排序正确,那么您可以使用as.integer 来仅使用factor 中的整数索引。我们可以确定您是否提供了明确的样本数据,即dput(head(x)) 我想使用 as.numeric() 以使其连续。否则,它与离散几乎相同(如果它可以采用的唯一值是整数)。 这是完全合法的 R 代码:从数学的角度来看,从整数制作“浮点数”是非常好的,尽管你误导自己相信你的离散数据是连续的(尽管这更像是一个准确性/精度的主题)。您没有使用as.numeric 有什么原因吗? 【参考方案1】:

您可以使用as.numeric() 函数来做到这一点。使用您的数据框,我们有:

data_frame <- data.frame(
pets_owned = c("10", "2", "4","6","9"),
age_rank = c("30", "50", "60","20","70")
)

这是你的 Dataframe 的样子:

> data_frame
  pets_owned age_rank
1         10       30
2          2       50
3          4       60
4          6       20
5          9       70

检查我们拥有的age_rank列的类数据类型:

> class(data_frame$age_rank)
[1] "factor"

所以使用as.numeric():

data_frame[2]=as.numeric(data_frame$age_rank)
# update the value in the position [2] of the dataframe

这是您的数据框,年龄排名中的值为 1、2、3、4、5。

> data_frame
  pets_owned age_rank
1         10        2
2          2        3
3          4        4
4          6        1 # note that the value 1 
5          9        5 # correspond with the age of 20.

再次检查该列:

> class(data_frame$age_rank)
[1] "numeric"

【讨论】:

以上是关于是否有将分类变量转换为连续变量的 R 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中将分类变量转换为连续变量?

R语言进行变量编码(recode):把dataframe中连续变量基于条件表达式转化为多个类别的离散变量(分类变量)使用attach函数绑定数据

广义与一般线性模型及R使用

SPSS:如何将连续变量转换为等级变量?

如何将连续变量转换为分类变量?

R语言 变量