R语言学习笔记2——数据集

本文介绍了R语言中数据集的基本概念及其操作方法,包括矩阵、数组、数据框的创建及应用示例,适合初学者快速掌握R语言数据处理技巧。

R语言学习笔记2--数据集篇

参考资料:R语言实战

数据集即dataset,就是我们通常说的数据表,有行列信息。

矩阵

矩阵是二维数组,可以通过函数matrix创建矩阵。实例如下:

其它的参数看名字就能明白是什么意思,着重说一下byrow这个参数,如果是true说明矩阵的值是按列排的,就是说先填完第一列再填第二列。如果false就是按照行排列。

矩阵的下标和c语言的数组下标差不多。不赘述

数组

数组和矩阵类似,维度可以大于2。可以理解成c语言里的多维数组。数组myarray<-array(vector, dimensions, dimnames), dimensions 表示维度,比如一个2*2*3的数组,那么dimensions就是c(2,2,3)。下面例子显示了如何创建多维的数组。

> dim<-c("a1","a2") //这行命名了数组第一维度的名字
> z<-array(1:16,c(2,2,3),dimnames=list(dim))  //创建数组的命令
> z
, , 1
 
   [,1] [,2]
a1    1    3
a2    2    4
 
, , 2
 
   [,1] [,2]
a1    5    7
a2    6    8
 
, , 3
 
   [,1] [,2]
a1    9   11
a2   10   12

数组的选取和其它都一样,比如z[1,1,3]就是9

> z[1,1,3]
a1 
 9  

数据框

数据框就是sas,spss等里面的数据集,sas里一个数据集就是一张表。因此数据框将会是以后最常见的数据类型。

数据框的创建函数:data.framecol1,col2,col3……)

如果要创建一个表的话,可以从单列创建,最后组合成数据框。例如我们上一期的例题图表就可以这么创建:

> SSN<-c(123874414,646239182,012437652,018451357) //这里创建了社保号这一列
> ASalary<-c(28000,29500,35100,26500)     //创建年收入列
> age<-c(35,37,40,31)						//创建年龄列
> race<-c("w","b","w","w")					//种族列
)
> residentTable<-data.frame(SSN,ASalary,age,race)		//创建residentTable数据框

> residentTable
        SSN ASalary age race                  //打印出residentTable表
1 123874414   28000  35    w
2 646239182   29500  37    b
3  12437652   35100  40    w
4  18451357   26500  31    w

这里会引入一个新符号$,这个符号可以取出数据框中的某一列。比如我们要取出age,就输入:

residentTable$age

果要对某一列进行排序的话,需要使用order函数。还是回到第一节的例题,通过刚才的步骤我们已经把residentTable这个数据框给建立起来了。根据题目要求,需要按照社会保险号的顺序重新排列收入。具体实现代码如下:

> o<-order(SSN) //order函数会按照升序重排变量顺序,并写入到向量o里面
> o
[1] 3 4 1 2 //这里可见order函数的返回值其实是一列顺序向量
> rbind(SSN[o],ASalary[o])   //接下来rbind社保号和年收入,重排序后的对照表就出来了。
         [,1]     [,2]      [,3]      [,4]
[1,] 12437652 18451357 123874414 646239182
[2,]    35100    26500     28000     29500

 如果觉得行列名不美观,可以通过data.fram来定义行列名

new<-data.frame(rbind(SSN[o],ASalary[o]))
> new
        X1       X2        X3        X4
1 12437652 18451357 123874414 646239182
2    35100    26500     28000     29500

例题:

一个大公司想了解哪些人购买了其产品,ceo希望得到“典型购房者”的情况。于是收集了购买者的如下信息:年龄,种族,收入,婚姻状况,以及是有房还是租房。请编写一个程序得到典型购房者的概况。(需要自己编写数据)

 例题的解答过程会放在下一个部分。祝大家新春快乐。

参考教材

R in action   下载
### R语言回归分析的学习方法与示例 #### 1. 简单线性回归 简单线性回归是研究两个连续型变量之间关系的一种基本方法。在R语言中,可以通过`lm()`函数来实现这一过程。该函数的核心语法为 `lm(formula, data)`,其中`formula`表示因变量和自变量的关系表达式,通常写成`y ~ x`的形式。 以下是简单的线性回归代码示例: ```r # 加载数据集 data(mtcars) # 创建简单线性回归模型 model <- lm(mpg ~ wt, data = mtcars) # 查看模型摘要 summary(model) ``` 此代码片段展示了如何利用汽车重量(`wt`)预测每加仑行驶英里数(`mpg`)的简单线性回归模型[^4]。 --- #### 2. 多元线性回归 当存在多个自变量时,可以使用多元线性回归来探索它们与因变量之间的关系。同样,在R语言中也可以通过`lm()`函数完成这项任务。 下面是一个多元线性回归的例子: ```r # 创建多元线性回归模型 model_multi <- lm(mpg ~ wt + hp, data = mtcars) # 输出模型结果 summary(model_multi) ``` 在此例子中,除了车重(`wt`)外,还加入了马力(`hp`)作为另一个自变量来共同影响燃油效率(`mpg`)的结果。 --- #### 3. Logistic回归 对于分类问题,Logistic回归是非常重要的工具之一。它可以用来估计事件发生的概率。在R语言中,可借助`glm()`函数执行逻辑回归操作,其核心语句形式类似于`glm(y ~ x, family = binomial(), data)`。 这里给出一个具体的实例: ```r # 导入内置鸢尾花数据集并转换目标列到因子类型 data(iris) iris$Species_binary <- as.numeric(iris$Species == "versicolor") # 构造logistic回归模型 model_logit <- glm(Species_binary ~ Sepal.Length + Petal.Width, family = binomial(link='logit'), data=iris) # 显示模型详情 summary(model_logit) ``` 这段脚本演示了基于花瓣宽度以及萼片长度两项特征去判断某朵花卉是否属于“Versicolor”品种的过程[^1]。 --- #### 4. 模型评估与优化 为了衡量所构建模型的好坏程度,有必要引入一些评价指标比如均方根误差(RMSE),决定系数($R^2$)等;另外还可以采用诸如K折交叉验证这样的技术手段进一步提升泛化能力。 以下是如何计算RMSE的一个示范程序: ```r library(Metrics) # 预测新样本值 predicted_values <- predict(model, newdata = mtcars) # 计算实际值与预测值间的差异度量——均方根误差 rmse_value <- rmse(mtcars$mpg, predicted_values) print(rmse_value) ``` 同时关于交叉验证部分,则推荐查阅专门讨论这部分内容的文章以获得更深入的理解。 --- ### 总结 以上就是有关于怎样运用R软件包来进行各类常见类型的回归分析介绍及其对应的实际编码展示。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值