是否有将分类变量转换为连续变量的 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语言进行变量编码(recode):把dataframe中连续变量基于条件表达式转化为多个类别的离散变量(分类变量)使用attach函数绑定数据