网站首页 > 技术文章 正文
因子在R语言中可以用来表示名义型变量或有序变量。名义变量一般表示类别,如性别,种族等等。有序变量是有一定排序顺序的变量,如职称,年级等等。在R语言中,名义变量和有序变量可以使用因子来表示。
创建因子
在R语言中可以使用factor()函数和gl()函数来创建因子变量。
(1)使用factor()函数
factor()函数的语法格式为:
f <- factor(x=charactor(), levels, labels=levels, exclude = NA, ordered = is.ordered(x), namax = NA)
其中:
x 为创建因子的数据,是一个向量;
levels:因子数据的水平,默认是x中不重复的值;
labels:标识某水平的名称,与水平一一对应,以方便识别,默认取levels的值;
exclude:从x中剔除的水平值,默认为NA值;
ordered:逻辑值,因子水平是否有顺序(编码次序),若有取TRUE,否则取FALSE;
nmax:水平个数的限制。
下面给出几个具体的例子来说明具体使用方法:
fc1 <- factor(c(1, 2, 3, 3, 1, 2, 2, 3, 1, 3, 2, 1))
fc2 <- factor(rep(1:3, times = 2), labels = c("A", "B", "C"))
grade <- c("Freshman", "Sophomore", "Junior", "Senior")
fc3 <- factor(grade, ordered = TRUE) #对于字符型向量,因子的水平默认依字母顺序创建
fc4 <- factor(grade, ordered = TRUE, levels = c("Freshman", "Sophomore", "Junior", "Senior")) #指定levels,则按levels中的顺序定义数值
本部分执行情况如下图所示:
(2)使用gl()函数
gl()函数用于定义有规律的因子向量,其语法格式如下:
gl(n, k, length = n*k, labels = 1:n, ordered = FALSE)
其中参数的含义如下:
n: 正整数,表示因子的水平个数
k:正整数,表示每个水平重复的次数;
length: 正整数,表示因子向量的长度,默认为n*k
labels: 表示因子水平的名称,默认值为1:n
ordered: 逻辑变量,表示因子水平是否是有次序的,默认值为FALSE
g1 <- gl(3, 3) # 1 1 1 2 2 2 3 3 3
g2 <- gl(3, 3, 5) # 1 1 1 2 2
g3 <- gl(3, 2, labels = c('A', 'B', 'C')) # A A B B C C
本部分的结果情形如下图所示:
因子的索引
fc1[1] #访问输出第一个水平
fc1[1:3] #访问输出1~3个水平
fc1[c(1, 4, 7)] #访问输出第1,4,7个水平值
fc1[-1] #排除第一个
fc1[-c(1:4)] #排除第1~4个
fc1[fc1 != 1] #过滤掉等于1的因子水平
fc3[fc3 > 'Junior'] #对于有序因子可以使用>,>=,<,<=,!=,==;而非有序因子,只可以使用!=和==
注意:因为因子一般表示名义变量或有序变量,如非有序因子,则使用>,>=,<,<=比较大小是没有意义的。
本部分执行情况如下图所示:
因子的修改
fc1[1] <- 3 #注意,修改的值必须在原有的水平中
fc1[1:3] <- 2 #将1~3个水平值改为2
fc1[-1] <- 3 #将除第1个水平之外的其它水平值修改为3
fc1[-c(1,4,7)] <-1 #将除第1,4,7个水平之外的值修改为1
执行情况如下:
欢迎关注本号,本号近期持续更新R语言的内容。从简入深,从基本语法到实际的数据分析应用。
猜你喜欢
- 2024-10-07 R语言实践问题与解决方法记录(一)
- 2024-10-07 R数据分析:使用R语言进行卡方检验
- 2024-10-07 R数据分析:如何用R做多重插补,实例操练
- 2024-10-07 R语言——关联规则(r语言关联规则分析)
- 2024-10-07 R语言数据质量分析(r语言数据分析步骤)
- 2024-10-07 R语言风险价值VaR(Value at Risk)和损失期望
- 2024-10-07 R语言——几个基础统计(r语言统计学)
- 2024-10-07 干货 | 超实用的【R语言与高级医学统计学】课程,科研人必备
- 2024-10-07 协同过滤的R语言实现及改进(协同过滤算法改进)
- 2024-10-07 R语言3种数据分析方法,搬好板凳,记笔记了!
- 1516℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 582℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 517℃MySQL service启动脚本浅析(r12笔记第59天)
- 488℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 487℃启用MySQL查询缓存(mysql8.0查询缓存)
- 473℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 453℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 451℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)