Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何按类别分列R中的数据

如何按类别分列R中的数据
EN

Stack Overflow用户
提问于 2020-08-20 01:38:04
回答 1查看 140关注 0票数 0

假设我有数据框架(下图),我想根据区域分成两个新的类别,一个是BC,另一个是NZ,我是如何实现这一点的?( R) 数据

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-20 02:05:42

下面是mtcars数据的一个示例,其中我们使用传输变量am来用ggplot2包绘制分散图中的不同组。

我们将创建一个散点图,在x轴上使用位移变量,在y轴上创建每加仑英里数。由于发动机排量较大的汽车通常比排量较小的汽车消耗更多的汽油,我们预计图表中会出现一个负向关系(mpg较高,排量值较低)。

首先,我们将am转换成一个因子变量,使图例输出两个类别,而不是0到1之间的连续体。然后,我们使用ggplot()geom_point()来根据am的值设置点颜色。

代码语言:javascript
代码运行次数:0
复制
library(ggplot2)
mtcars$am <- factor(mtcars$am,labels = c("automatic","manual"))
ggplot(mtcars,aes(disp,mpg,group = am)) +
     geom_point(aes(color = am))

...and输出:

用面组将图表分离

我们可以直接使用ggplot2通过分组变量生成单独的图表。在ggplot2中,这被称为面图。我们使用facet_wrap()将数据拆分为am值,如下所示。

代码语言:javascript
代码运行次数:0
复制
ggplot(mtcars,aes(disp,mpg,group = am)) +
     geom_point() +
     facet_wrap(mtcars$am,ncol = 2)

...and输出:

增加回归线和置信区间

考虑到原始问题中的注释,我们使用geom_smooth()函数向图中添加一条回归线,默认为低平滑。

代码语言:javascript
代码运行次数:0
复制
ggplot(mtcars,aes(disp,mpg,group = am)) +
     geom_point() +
     facet_wrap(mtcars$am,ncol = 2) + 
     geom_smooth(span = 1)     

...and输出:

为了使用简单的回归而不是低平滑,我们在geom_smooth()中使用了geom_smooth()参数,并将其设置为lm

代码语言:javascript
代码运行次数:0
复制
ggplot(mtcars,aes(disp,mpg,group = am)) +
     geom_point() +
     facet_wrap(mtcars$am,ncol = 2) + 
     geom_smooth(method = "lm") 

...and输出:

按组生成回归模型

在这里,我们将数据框架按am值进行拆分,并使用lapply()为每一组生成回归模型。

代码语言:javascript
代码运行次数:0
复制
carsList <- split(mtcars,mtcars$am)
lapply(carsList,function(x){
     summary(lm(mpg ~ disp,data = x))

})

...and输出:

代码语言:javascript
代码运行次数:0
复制
$automatic

Call:
lm(formula = mpg ~ disp, data = x)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7341 -1.6546 -0.8855  1.6032  5.0764 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 25.157064   1.592922   15.79 1.36e-11 ***
disp        -0.027584   0.005146   -5.36 5.19e-05 ***
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 2.405 on 17 degrees of freedom
Multiple R-squared:  0.6283,    Adjusted R-squared:  0.6064 
F-statistic: 28.73 on 1 and 17 DF,  p-value: 5.194e-05


$manual

Call:
lm(formula = mpg ~ disp, data = x)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.6056 -2.4200 -0.0956  3.1484  5.2315 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 32.86614    1.95033  16.852 3.33e-09 ***
disp        -0.05904    0.01174  -5.031 0.000383 ***
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 3.545 on 11 degrees of freedom
Multiple R-squared:  0.6971,    Adjusted R-squared:  0.6695 
F-statistic: 25.31 on 1 and 11 DF,  p-value: 0.0003834

注意:由于这是一个示例,说明了使用拆分变量生成回归分析所需的代码,因此我们将不详细介绍这里的数据是否符合普通最小二乘回归的建模假设。

一种回归模型中的组建模

正如我在注释中所指出的,如果我们指定了am效应以及amdisp之间的交互效应,那么我们可以在一个回归模型中解释自动传输和手动传输之间的差异。

代码语言:javascript
代码运行次数:0
复制
summary(lm(mpg ~ disp + am + am * disp,data=mtcars))

通过从每个模型生成预测,我们可以演示该模型生成与手动传输的拆分模型相同的预测,如下所示。

代码语言:javascript
代码运行次数:0
复制
data <- data.frame(am = c(1,1,0),
                   disp = c(157,248,300))
data$am <- factor(data$am,labels = c("automatic","manual"))
mod1 <- lm(mpg ~ disp + am + am * disp,data=mtcars)
predict(mod1,data)
mod2 <- lm(mpg ~ disp,data = mtcars[mtcars$am == "manual",])
predict(mod2,data[data$am == "manual",])

...and输出:

代码语言:javascript
代码运行次数:0
复制
> data <- data.frame(am = c(1,1,0),
+                    disp = c(157,248,300))
> data$am <- factor(data$am,labels = c("automatic","manual"))
> mod1 <- lm(mpg ~ disp + am + am * disp,data=mtcars)
> predict(mod1,data)
       1        2        3 
23.59711 18.22461 16.88199 
> mod2 <- lm(mpg ~ disp,data = mtcars[mtcars$am == "manual",])
> predict(mod2,data[data$am == "manual",])
       1        2 
23.59711 18.22461 

我们对分裂模型的predict()之前的数据进行子集,以便只为有人工传输的观测生成预测。由于预测结果是一致的,我们证明了按传输类型建立单独的模型与包含范畴am效应和am * disp交互效应的完全指定的模型没有什么不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63502325

复制
相关文章
layui数据表格
https://www.layui.com/doc/modules/table.html
阿超
2022/08/17
1.3K0
layui数据表格
LayUI之旅-数据表格
layui的数据表格是使用频率非常高的组件,在入门篇,我们已经大致了了解了数据表格的方法级渲染,接下来我们深入研究和学习layui-table组件的使用方法。
Yiiven
2022/12/15
4.5K0
Layui 数据表格重载
表格重载可用于刷新表格,筛选表格数据,通过容器的 实例 或 ID 进行表格重载 1. 数据表格容器 <!-- 数据表格容器 --> 2. 使用 数据表格容器的实例 进行表格重载 // 方法渲染 返回当前容器的实例(对象) 3. 使用 数据表格容器的ID 进行表格重载 // 利用容器的ID重载表格
很酷的站长
2023/02/16
7720
Layui 数据表格重载
MySQL数据表格导入导出
结语:数据的具体导入导出格式大家可以自己尝试一下。但个人建议涉及格式转换的话尽量先用其他工具,为防止出错还是尽量只转换纯文本列数据(无特殊格式)。
云海谷天
2022/08/09
3.3K0
Layui数据表格的动态加载
Layui是一个很好的前端框架,很多人都会用到,layui的数据表格这个就是从数据库查询出来的数据渲染到表格上。
PHY_68
2020/10/28
2.8K0
Layui数据表格的动态加载
vue导出excel数据表格功能
前端工作量最多的就是需求,需求就是一直在变,比如当前端数据写完之后,需要用Excel把数据下载出来。
小周sir
2019/09/23
1.7K0
vue导出excel数据表格功能
前端|layui后台管理—table 数据表格
layui是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用,非常适合界面的快速开发。layui区别于那些基于MVVM底层的UI框架,不需要各种前端工具的复杂配置,只需面对浏览器本身。
算法与编程之美
2020/05/29
2.2K0
前端|layui后台管理—table 数据表格
Layui数据表格templet的数据无法合计
在使用layui数据表格的时候,有一个列是使用templet,依据其他两个列数据计算得到。
宣言言言
2019/12/15
2.4K0
layui数据表格checkbox设置部分不可选
在layui数据表格中设置了字段为type:checkbox 但是想要实现部分不显示,不可选的功能。
宣言言言
2019/12/17
14K0
使用LayUI操作数据表格「建议收藏」
此时点击查询按钮,会将keyword这个关键字传到后端,接下来就是自己处理查询关键字业务了。
全栈程序员站长
2022/09/20
2.4K0
使用LayUI操作数据表格「建议收藏」
商城项目回顾整理(二)easyUi数据表格使用
后台主页: 商品的数据表格展示 引入用户表数据表格展示 引入日志表数据表格展示 引入订单表数据表格展示 后台主页代码: 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" 3 import="com.hanqi.model.Log,java.net.UnknownHostException,java.net.InetAddress,java.util.*,
二十三年蝉
2018/02/28
1.3K0
layui数据表格自定义每页条数limit设置
table.render({ elem: '#table', url: 'userCenter/userlist', where: { access_token: config.getToken().access_token }, page: true, limits: [100,1000, 2000, 5000], limit: 1000, //每页默认显示的数量 cols: [[ {checkbox: true}, {type: 'number
似水的流年
2020/10/27
2.3K0
vue09动态树+数据表格+分页模糊查
14天阅读挑战赛 努力是为了不平庸~ 目录 1. 准备工作  2. 动态树 2.1 在配置请求路径 2.2 使用动态数据构建导航菜单 2.2.1 通过接口获取数据  2.2.3 通过后台获取的数据构建菜单导航 2.3 点击菜单实现路由跳转 2.3.1 创建书本管理组件 2.3.2 配置路由 2.3.3 修改LeftAside组件 2.3.4 修改Main组件 3. 系统首页配置 4. 表格数据显示 4.1 页面布局 4.2 查询并在表格中显示数据 4.3 实现分页 ---- 1. 准备工作 创建测试数据库
天蝎座的程序媛
2022/11/18
1.2K0
vue09动态树+数据表格+分页模糊查
操作MS Execl电子表格的常用JAR包
支持Excel 95-2000的所有版本;生成Excel 2000标准格式;支持字体、数字、日期操作;能够修饰单元格属性;支持图像和图表。
BUG弄潮儿
2020/12/02
1K0
Apache ECharts 一个开源可商用的数据表格
ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
KEVINGUO_CN
2020/03/17
2K0
R包reshape2 |轻松实现长、宽数据表格转换
https://seananderson.ca/2013/10/19/reshape/
生信宝典
2019/10/24
12K0
R包reshape2,轻松实现长、宽数据表格转换
本文翻译自外文博客,原文链接:https://seananderson.ca/2013/10/19/reshape/
生信宝典
2018/12/07
8.2K0
R包reshape2,轻松实现长、宽数据表格转换
Layui 数据表格方法渲染中的复杂表头简单使用示例
{ "code": 0, "msg": "用户信息", "count": 5, "data":[ { "id": 1, "name": "张三", "sex": "女", "prov": "河南", "city": "郑州市", "dist": "金水区" }, { "id": 2, "name": "李四", "sex": "男", "prov": "河南", "city": "郑州市", "dist": "金水区" }, { "id": 3, "name": "王五", "sex": "女", "prov": "河南", "city": "郑州市", "dist": "二七区" }, { "id": 4, "name": "赵六", "sex": "女", "prov": "河南", "city": "开封市", "dist": "龙亭区" }, { "id": 5, "name": "小七", "sex": "男", "prov": "河南", "city": "开封市", "dist": "鼓楼区" } ] }
很酷的站长
2023/02/16
2K0
Layui 数据表格方法渲染中的复杂表头简单使用示例
点击加载更多

相似问题

如何在Java中的gzip文件上获得时间戳

13

更改文件Linux上的更改时间戳

10

如何在Linux上向签名的PE文件添加时间戳证书?

39

在Python中设置gzip时间戳

71

保存时间戳和IP地址

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档