R语言笔记频数表和列联表-创新互联

我们将着眼于类别型变量的频数表和列联表,以及相应的独立性检验、相关性的

创新互联建站长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为徐州企业提供专业的成都网站建设、网站设计,徐州网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

度量、图形化展示结果的方法还将连带使用vcd包和gmodels包中的函数。

数据来自vcd包中的Arthritis数据集

library(vcd)

一维列联表

可以使用table()函数生成简单的频数统计表

> mytables<-with(Arthritis,table(Improved))

> mytables

Improved

 None  Some Marked

  42   14   28

可以用prop.table()将这些频数转化为比例值

> prop.table(mytables)

Improved

   None    Some   Marked

0.5000000 0.1666667 0.3333333

或使用prop.table()*100转化为百分比:

> prop.table(mytables)*100

Improved

  None   Some  Marked

50.00000 16.66667 33.33333

---

二维列联表

对于二维列联表,table()函数的使用格式为:

其中的A是行变量,B是列变量

table(A,B)

其中的mydata是一个矩阵或数据框

xtabs(~A+B,data=mydata)

> mytable <- xtabs(~ Treatment+Improved,data=Arthritis)

> mytables

Improved

 None  Some Marked

  42   14   28

你可以使用margin.table()和prop.table()函数分别生成边际频数和比例。行和与行比

例可以这样计算:

> margin.table(mytable,1)

Treatment

Placebo Treated

   43    41

> margin.table(mytable,2)

Improved

 None  Some Marked

  42   14   28

下标1指代table()语句中的第一个变量,行变量
下标2指代table()语句中的第二个变量,列变量

---

各单元格所占比例可用如下语句获取

> prop.table(mytable)

     Improved

Treatment    None    Some   Marked

 Placebo 0.34523810 0.08333333 0.08333333

 Treated 0.15476190 0.08333333 0.25000000

每个单元格比例加起来为1

> prop.table(mytable,1)

     Improved

Treatment    None    Some   Marked

 Placebo 0.6744186 0.1627907 0.1627907

 Treated 0.3170732 0.1707317 0.5121951

> prop.table(mytable,2)

     Improved

Treatment    None    Some   Marked

 Placebo 0.6904762 0.5000000 0.2500000

 Treated 0.3095238 0.5000000 0.7500000

计算每个行或者列占比,1为计算列,2为计算行
---

你可以使用addmargins()函数为这些表格添加边际和

> addmargins(prop.table(mytable,2))

     Improved

Treatment    None    Some   Marked    Sum

 Placebo 0.6904762 0.5000000 0.2500000 1.4404762

 Treated 0.3095238 0.5000000 0.7500000 1.5595238

 Sum   1.0000000 1.0000000 1.0000000 3.0000000

> addmargins(prop.table(mytable,1))

     Improved

Treatment    None    Some   Marked    Sum

 Placebo 0.6744186 0.1627907 0.1627907 1.0000000

 Treated 0.3170732 0.1707317 0.5121951 1.0000000

 Sum   0.9914918 0.3335224 0.6749858 2.0000000

计算每个行或者列和

> addmargins(mytable)

     Improved

Treatment None Some Marked Sum

 Placebo  29   7    7  43

 Treated  13   7   21  41

 Sum    42  14   28  84

> addmargins(prop.table(mytable))

     Improved

Treatment    None    Some   Marked     Sum

 Placebo 0.34523810 0.08333333 0.08333333 0.51190476

 Treated 0.15476190 0.08333333 0.25000000 0.48809524

 Sum   0.50000000 0.16666667 0.33333333 1.00000000

table()函数默认忽略缺失值(NA)。要在频数统计中将NA视为一个有效的类别,请设

定参数useNA="ifany"。

-------

使用gmodels包中的CrossTable()函数是创建二维列联表的第三种方法

。CrossTable()

函数仿照SAS中PROC FREQ或SPSS中CROSSTABS的形式生成二维列联表

用CrossTable生成二维列联表

> library(gmodels)

> CrossTable(Arthritis$Treatment,Arthritis$Improved)

  Cell Contents

|-------------------------|

|            N |

| Chi-square contribution |

|      N / Row Total |

|      N / Col Total |

|     N / Table Total |

|-------------------------|

Total Observations in Table:  84

          | Arthritis$Improved

Arthritis$Treatment |    None |    Some |   Marked | Row Total |

--------------------|-----------|-----------|-----------|-----------|

     Placebo |     29 |     7 |     7 |     43 |

          |   2.616 |   0.004 |   3.752 |      |

          |   0.674 |   0.163 |   0.163 |   0.512 |

          |   0.690 |   0.500 |   0.250 |      |

          |   0.345 |   0.083 |   0.083 |      |

--------------------|-----------|-----------|-----------|-----------|

     Treated |     13 |     7 |     21 |     41 |

          |   2.744 |   0.004 |   3.935 |      |

          |   0.317 |   0.171 |   0.512 |   0.488 |

          |   0.310 |   0.500 |   0.750 |      |

          |   0.155 |   0.083 |   0.250 |      |

--------------------|-----------|-----------|-----------|-----------|

  Column Total |     42 |     14 |     28 |     84 |

          |   0.500 |   0.167 |   0.333 |      |

--------------------|-----------|-----------|-----------|-----------|

CrossTable()函数有很多选项,可以做许多事情:计算(行、列、单元格)的百分比;指

定小数位数;进行卡方、Fisher和McNemar独立性检验;计算期望和(皮尔逊、标准化、调整的

标准化)残差;将缺失值作为一种有效值;进行行和列标题的标注;生成SAS或SPSS风格的输出。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

文章标题:R语言笔记频数表和列联表-创新互联
转载源于:https://www.cdcxhl.com/article30/cecppo.html

成都网站建设公司_创新互联,为您提供网站营销面包屑导航服务器托管网站内链建站公司自适应网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司