在学习R的时候,最困扰初学者的往往不是某个函数的具体应用,而是代码的连续性以及实现函数功能背后的逻辑和算法,该笔记记录了笔者对R基本管理的学习心得。-----参考书(R语言实战第四章 基本数据管理)
一,数据管理的意义
我们获得的数据集可能具有多种变量和观测,此时对于数据如果不进行整理和划分,很难突出我们想要关注的重点。尤其对于临床资料,在涉及患者的随访,疾病分期和分级的时候,对于具有明显年龄偏好性的疾病,数据整理尤为重要。在学习R语言的时候,我们不仅要明确R的基本语法,同时,也要明确R对于数据管理的犀利作用。
二,数据加工之创建新变量
在原有数据框的基础上,我们需要对原始变量进行细分创建新的变量。举个例子,我们有一组癌症患者的年龄数据,从20到80不等,此时我们需要对于这一组数据进行重新整理。分为大于60的年长组和低于60的青年组,这个时候就需要创建新的变量。
假如有一个mydata的数据框,其中变量x1和x2,若我们要在该基础上创建一个的变量sumx储存x1+x2,以及mean储存x1+x2的均值,并且将变量储存于原来的数据框
mydata <-transform(mydata,sumx=x1+x2,
mean=(x1+x2)/2) transform()是文中最为推荐的函数,当然也有很多别的方法
三,数据加工之变量重编码
当我们发现变量的观测值失去观测意义或者压根不符合我们的需要或者是错误的时候,此时我们需要对变量进行重编码
此时需要使用逻辑运算符号
运算符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 严格等于 |
!= | 不等于 |
!x | 不等于x |
x | y | x or y |
x $ y | x and y |
isTRUE(x) | x是否为True |
还是患者年龄分组的问题
模板 variable [ condition ] <-expression 仅在condition为true的时候执行语句
在数据框中 leadership<-within (leadership,{
agecat[ age==99] <- NA #年龄为99的记录为缺失值
agecat[ age>=60] <-" elder " #年龄大于等于60为老年组
agecat[ age< 60] <-" young "}) #年龄小于60为青年组
within函数允许我们修改名为leadership的数据框,创建了一个叫agecat的变量,并将每一行定义为缺失,然后按照数据框leadership中的变量age逐行判断覆盖缺失值。