
先回忆一下之前用到的例子。
将其输入R语言中:
age <- c(25, 34, 59, 60, 20) #患者年龄
type <- c(1, 2, 2, 2, 1) #糖尿病类型
status <- c("poor", "improved", "excellent", "poor", "excellent") #病情
comorbidity<- c(TRUE, FALSE, FALSE, TRUE, FALSE) #出现并发症
mydata <- data.frame(age, type, status, comorbidity) #将数据框命名为mydata
查看mydata:
mydata
## age type status comorbidity
## 1 25 1 poor TRUE
## 2 34 2 improved FALSE
## 3 59 2 excellent FALSE
## 4 60 2 poor TRUE
## 5 20 1 excellent FALSE
接下来我们就以mydata为例,介绍一下如何对数据框进行简单的操作。
了解一个数据框
多重线性回归,一般是指有多个自变量X,只有一个因变量Y。前面我们主要是以简单线性回归为例在介绍,两者的差距主要在于自变量X的数量,在只有一个X时,就称简单线性回归。
面对数据,第一步就是要了解它有多少条记录(或多少个case/ observation ),有多少个变量(variable)、分别是哪些。
## 获取数据框的维度(几行、几列)
dim(mydata)
[1] 5 4
## 查看数据框中的所有变量名(列名)
names(mydata)
[1] "age" "type" "status" "comorbidity"
## 查看数据框的整体结构(维度、变量名、数据类型、数据内容)
str(mydata)
'data.frame': 5 obs. of 4 variables:
$ age : num 25 34 59 60 20
$ type : num 1 2 2 2 1
$ status : Factor w/ 3 levels "excellent","improved",..: 3 2 1 3 1
$ comorbidity: logi TRUE FALSE FALSE TRUE FALSE
如何提取数据框中的行和列
多重线性回归,一般是指有多个自变量X,只有一个因变量Y。前面我们主要是以简单线性回归为例在介绍,两者的差距主要在于自变量X的数量,在只有一个X时,就称简单线性回归。
2种方法:
1. 数据框后加[ , ]。逗号前是行,逗号后是列。如果没有指定是哪一行或哪一列,默认为所有行/列。
## 提取第一行
mydata[1,]
age type status comorbidity
1 25 1 poor TRUE
## 提取第一列
mydata[,1]
[1] 25 34 59 60 2
## 提取某几行或某几列
## 提取1~3行
mydata[1:3,]
age type status comorbidity
1 25 1 poor TRUE
2 34 2 improved FALSE
3 59 2 excellent FALSE
## 提取第1和第5行的1、2、4列
mydata[c(1,5),c(1,2,4)]
age type comorbidity
1 25 1 TRUE
5 20 1 FALSE
## 变量很多时,用列名来提取更方便
mydata[c(1,5),c('age','type','comorbidity')]
age type comorbidity
1 25 1 TRUE
5 20 1 FALSE
2. 另一种提取列的方法是,在数据框后加 $,然后再加要提取的列名。
## 提取age这一列
mydata$age
[1] 25 34 59 60 20
获取满足特定条件的数据
多重线性回归,一般是指有多个自变量X,只有一个因变量Y。前面我们主要是以简单线性回归为例在介绍,两者的差距主要在于自变量X的数量,在只有一个X时,就称简单线性回归。
1.提取满足某一个条件的数据。
例如,在病情status这个变量中,有poor, improved 和 excellent这三类,现在想获取病情最稳定、恢复最好的患者信息。也就是说,我们希望获得status为excellent的病例,即选择满足mydata$status=='excellent'的行,以及被选中的行的每一列。
mydata[mydata$status=='excellent',]
age type status comorbidity
3 59 2 excellent FALSE
5 20 1 excellent FALSE
此外,还可进一步提取,例如,想获得病情status为excellent的患者中,并发症comorbidity的情况。换句话说,就是,想提取comorbidity的信息,但这些信息必须是病情最稳定的几位患者的。
## 具体操作如下:先提取comorbidity,再设置status的条件
输入语句:mydata$comorbidity[mydata$status=='excellent']
[1] FALSE FALSE
2.提取满足多个条件的数据。
例如,想提取年龄age大于等于20岁,且小于35岁的病例。在R中,用&这个符号表达『并且』。用一个小竖杠 | 表达『或者』。
mydata[mydata$age>=20 & mydata$age<35,]
age type status comorbidity
1 25 1 poor TRUE
2 34 2 improved FALSE
5 20 1 excellent FALSE
3.subset()函数,既可用来选择行,也可选择列,当然也可以用来提取满足特定条件的内容。
# 选择行/满足特定条件的行
subset(mydata, mydata$age>=20 & mydata$age<35)
age type status comorbidity
1 25 1 poor TRUE
2 34 2 improved FALSE
5 20 1 excellent FALSE
# 选择列
subset(mydata, select = c('age','status'))
age status
1 25 poor
2 34 improved
3 59 excellent
4 60 poor
5 20 excellent
有缺失数据怎么办
多重线性回归,一般是指有多个自变量X,只有一个因变量Y。前面我们主要是以简单线性回归为例在介绍,两者的差距主要在于自变量X的数量,在只有一个X时,就称简单线性回归。
由于原来的数据框中没有缺失数据,这里我们来构造一个新的记录(observation),让这个记录中全部都是缺失值。
mydata[6,] <- NA
mydata
age type status comorbidity
1 25 1 poor TRUE
2 34 2 improved FALSE
3 59 2 excellent FALSE
4 60 2 poor TRUE
5 20 1 excellent FALSE
6 <NA> <NA> <NA> <NA>
1. 只保留无缺失的observations。如果希望将无缺失版本的数据框保存起来,要记得把na.omit(mydata)的结果赋值给新的对象。
mydata_no_NA <- na.omit(mydata)
mydata_no_NA
age type status comorbidity
1 25 1 poor TRUE
2 34 2 improved FALSE
3 59 2 excellent FALSE
4 60 2 poor TRUE
5 20 1 excellent FALSE
2. 查看哪个数据为缺失值。需要用到2个函数,这里提醒大家,如果R的语句太复杂,那么可以先从最中心的部分读起,一层括号一层括号地向外扩展。
例如,下面的语句,可以先看最中间的is.na(mydata$age),意思是对age这列中的每个数据进行一次检验,返回『是否为缺失值』的逻辑型结果,即TRUE 或者 FALSE。再看which()这个函数,它返回的是前面这一串TRUE和FALSE中,出现TRUE的顺序号。
从下面的结果我们可以看到,只有第6个数据是TRUE。
which(is.na(mydata$age))
[1] 6
is.na(mydata$age)
[1] FALSE FALSE FALSE FALSE FALSE TRUE
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
解析 loss.backward ():深度学习中梯度汇总与同步的自动触发核心 在深度学习模型训练流程中,loss.backward()是连接 “前向计算 ...
2025-09-02要解答 “画 K-S 图时横轴是等距还是等频” 的问题,需先明确 K-S 图的核心用途(检验样本分布与理论分布的一致性),再结合横轴 ...
2025-09-02CDA 数据分析师:助力企业破解数据需求与数据分析需求难题 在数字化浪潮席卷全球的当下,数据已成为企业核心战略资产。无论是市 ...
2025-09-02Power BI 度量值实战:基于每月收入与税金占比计算累计税金分摊金额 在企业财务分析中,税金分摊是成本核算与利润统计的核心环节 ...
2025-09-01巧用 ALTER TABLE rent ADD INDEX:租房系统数据库性能优化实践 在租房管理系统中,rent表是核心业务表之一,通常存储租赁订单信 ...
2025-09-01CDA 数据分析师:企业数字化转型的核心引擎 —— 从能力落地到价值跃迁 当数字化转型从 “选择题” 变为企业生存的 “必答题”, ...
2025-09-01数据清洗工具全景指南:从入门到进阶的实操路径 在数据驱动决策的链条中,“数据清洗” 是决定后续分析与建模有效性的 “第一道 ...
2025-08-29机器学习中的参数优化:以预测结果为核心的闭环调优路径 在机器学习模型落地中,“参数” 是连接 “数据” 与 “预测结果” 的关 ...
2025-08-29CDA 数据分析与量化策略分析流程:协同落地数据驱动价值 在数据驱动决策的实践中,“流程” 是确保价值落地的核心骨架 ——CDA ...
2025-08-29CDA含金量分析 在数字经济与人工智能深度融合的时代,数据驱动决策已成为企业核心竞争力的关键要素。CDA(Certified Data Analys ...
2025-08-28CDA认证:数据时代的职业通行证 当海通证券的交易大厅里闪烁的屏幕实时跳动着市场数据,当苏州银行的数字金融部连夜部署新的风控 ...
2025-08-28PCU:游戏运营的 “实时晴雨表”—— 从数据监控到运营决策的落地指南 在游戏行业,DAU(日活跃用户)、MAU(月活跃用户)是衡量 ...
2025-08-28Excel 聚类分析:零代码实现数据分群,赋能中小团队业务决策 在数字化转型中,“数据分群” 是企业理解用户、优化运营的核心手段 ...
2025-08-28CDA 数据分析师:数字化时代数据思维的践行者与价值推动者 当数字经济成为全球经济增长的核心引擎,数据已从 “辅助性信息” 跃 ...
2025-08-28ALTER TABLE ADD 多个 INDEX:数据库批量索引优化的高效实践 在数据库运维与性能优化中,索引是提升查询效率的核心手段。当业务 ...
2025-08-27Power BI 去重函数:数据清洗与精准分析的核心工具 在企业数据分析流程中,数据质量直接决定分析结果的可靠性。Power BI 作为主 ...
2025-08-27CDA 数据分析师:数据探索与统计分析的实践与价值 在数字化浪潮席卷各行业的当下,数据已成为企业核心资产,而 CDA(Certif ...
2025-08-27t 检验与 Wilcoxon 检验:数据差异比较的两大统计利器 在数据分析中,“比较差异” 是核心需求之一 —— 如新药疗效是否优于旧药 ...
2025-08-26季节性分解外推法:解锁时间序列预测的规律密码 在商业决策、资源调度、政策制定等领域,准确的预测是规避风险、提升效率的关键 ...
2025-08-26CDA 数据分析师:数据治理驱动下的企业数据价值守护者 在数字经济时代,数据已成为企业核心战略资产,其价值的释放离不开高 ...
2025-08-26