
先回忆一下之前用到的例子。
将其输入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
Excel 导入数据含缺失值?详解 dropna 函数的功能与实战应用 在用 Python(如 pandas 库)处理 Excel 数据时,“缺失值” 是高频 ...
2025-09-16深入解析卡方检验与 t 检验:差异、适用场景与实践应用 在数据分析与统计学领域,假设检验是验证研究假设、判断数据差异是否 “ ...
2025-09-16CDA 数据分析师:掌控表格结构数据全功能周期的专业操盘手 表格结构数据(以 “行 - 列” 存储的结构化数据,如 Excel 表、数据 ...
2025-09-16MySQL 执行计划中 rows 数量的准确性解析:原理、影响因素与优化 在 MySQL SQL 调优中,EXPLAIN执行计划是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 对象的 text 与 content:区别、场景与实践指南 在 Python 进行 HTTP 网络请求开发时(如使用requests ...
2025-09-15CDA 数据分析师:激活表格结构数据价值的核心操盘手 表格结构数据(如 Excel 表格、数据库表)是企业最基础、最核心的数据形态 ...
2025-09-15Python HTTP 请求工具对比:urllib.request 与 requests 的核心差异与选择指南 在 Python 处理 HTTP 请求(如接口调用、数据爬取 ...
2025-09-12解决 pd.read_csv 读取长浮点数据的科学计数法问题 为帮助 Python 数据从业者解决pd.read_csv读取长浮点数据时的科学计数法问题 ...
2025-09-12CDA 数据分析师:业务数据分析步骤的落地者与价值优化者 业务数据分析是企业解决日常运营问题、提升执行效率的核心手段,其价值 ...
2025-09-12用 SQL 验证业务逻辑:从规则拆解到数据把关的实战指南 在业务系统落地过程中,“业务逻辑” 是连接 “需求设计” 与 “用户体验 ...
2025-09-11塔吉特百货孕妇营销案例:数据驱动下的精准零售革命与启示 在零售行业 “流量红利见顶” 的当下,精准营销成为企业突围的核心方 ...
2025-09-11CDA 数据分析师与战略 / 业务数据分析:概念辨析与协同价值 在数据驱动决策的体系中,“战略数据分析”“业务数据分析” 是企业 ...
2025-09-11Excel 数据聚类分析:从操作实践到业务价值挖掘 在数据分析场景中,聚类分析作为 “无监督分组” 的核心工具,能从杂乱数据中挖 ...
2025-09-10统计模型的核心目的:从数据解读到决策支撑的价值导向 统计模型作为数据分析的核心工具,并非简单的 “公式堆砌”,而是围绕特定 ...
2025-09-10CDA 数据分析师:商业数据分析实践的落地者与价值创造者 商业数据分析的价值,最终要在 “实践” 中体现 —— 脱离业务场景的分 ...
2025-09-10机器学习解决实际问题的核心关键:从业务到落地的全流程解析 在人工智能技术落地的浪潮中,机器学习作为核心工具,已广泛应用于 ...
2025-09-09SPSS 编码状态区域中 Unicode 的功能与价值解析 在 SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案 ...
2025-09-09CDA 数据分析师:驾驭商业数据分析流程的核心力量 在商业决策从 “经验驱动” 向 “数据驱动” 转型的过程中,商业数据分析总体 ...
2025-09-09R 语言:数据科学与科研领域的核心工具及优势解析 一、引言 在数据驱动决策的时代,无论是科研人员验证实验假设(如前文中的 T ...
2025-09-08T 检验在假设检验中的应用与实践 一、引言 在科研数据分析、医学实验验证、经济指标对比等领域,常常需要判断 “样本间的差异是 ...
2025-09-08