使用R基础包
内容提要
本文介绍用R基础包处理数据框:加载epiDisplay包的Familydata数据集,用head、tail、names、str、attributes查看结构与属性,并可自定义变量标签;按行列下标或条件选取子集,用subset筛选、sample随机抽样、order排序、duplicated查重去重、transform新增变量、NULL删除变量,以及attach和with简化变量调用。
延伸解读
数据框属性:不只是元数据
文章通过str()和attributes()展示了数据框的丰富属性,如datalabel、var.labels等。这些属性不仅帮助理解数据,还能被epiDisplay等包直接利用。自定义变量标签(如为code和sex添加标签)能提升数据可读性,尤其在后续分析中,标签可自动出现在输出里,减少误读。
子集选择:显示与保存的区别
使用下标或subset()筛选子集时,文章强调这些操作仅显示结果,不会修改原数据框。若想后续使用,必须赋值给新对象。这一区别对初学者至关重要,避免误以为原数据已改变。同时,条件筛选需注意逗号和双等号等语法细节。
随机抽样与可重复性
sample()函数可用于随机抽取行,常用于机器学习中划分训练集和验证集。文章指出,由于随机种子不同,每次运行结果可能不同。若需可重复结果,应设置随机种子。此外,replace参数控制是否放回抽样,默认不放回。
attach()的便利与风险
attach()将数据框加入搜索路径,简化变量调用,但可能导致资源过载或变量名冲突。文章建议使用with()替代,但with()的局限是赋值仅在函数内有效。因此,选择哪种方法取决于分析习惯,并建议定期用detach()清理搜索路径。
Q&A
如何查看R数据框的结构和属性?
可以使用head()和tail()查看前几行或后几行,names()列出变量名,str()显示数据框结构和变量类型,attributes()显示所有属性如变量标签。
在R中如何根据条件筛选数据框的子集?
可以使用下标条件,如Familydata[Familydata$sex == "F", ],或使用subset()函数,如subset(Familydata, sex == "F"),并可指定select参数选择特定变量。
R中如何对数据框进行随机抽样?
使用sample()函数,例如sample(1:nrow(Familydata), size = 3, replace = FALSE)随机抽取3行,replace参数控制是否放回抽样。
如何对R数据框按变量排序?
使用order()函数,如Familydata[order(Familydata$age), ]按age升序排列,添加decreasing = TRUE或使用负号可实现降序。
在R中如何查找和删除重复行?
使用duplicated()检测重复,如duplicated(Familydata$code),用any()或table()汇总;删除重复行可用Familydata1[!duplicated(Familydata1$code), ]。
R中如何添加或删除数据框中的变量?
添加变量可直接赋值,如Familydata$log10money <- log10(Familydata$money),或用transform();删除变量可赋NULL,如Familydata$log10money <- NULL。
attach()和with()在R中有什么作用?
attach()将数据框加入搜索路径,可直接使用变量名;with()在函数内临时使用数据框变量,避免全局污染。两者都简化代码,但attach()可能导致资源过载和命名冲突。