首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中平坦的列联表

R中平坦的列联表
EN

Stack Overflow用户
提问于 2016-09-22 18:27:58
回答 1查看 945关注 0票数 0

我有一个应急表(如泰坦尼克号数据集中内置的),我希望有一种方法来删除一个变量并将所有的值合并在一起。某种程度上,将数据投影到低维空间。

只看一张二维的桌子

代码语言:javascript
运行
复制
      Sex
Class  Male Female
  1st    57    140
  2nd    14     80
  3rd    75     76
  Crew  192     20

如果我们要删除“性”变量,我希望最终得到一个一维应急表,如下所示:

代码语言:javascript
运行
复制
Class  Freq
  1st   197
  2nd    94
  3rd   151
  Crew  212

我的实际用例是一个N维表,我希望能够从它构造所有N1和N*(N-1)/2双向表。我觉得应该有个简单的方法让这件事起作用。

编辑:请注意,这不是与此链接的问题的重复,因为它指的是数据表,而不是应急表。这里的解决方案是将应急表转换为数据表,然后使用xtabs返回一个应急表。引用的解决方案只处理从数据表开始并希望以数据表结束的情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 18:50:43

代码语言:javascript
运行
复制
data(Titanic)
library(dplyr)

as.data.frame(Titanic) %>% group_by(Class) %>% summarise(n=sum(Freq))

# Class     n
# (fctr) (dbl)
# 1    1st   325
# 2    2nd   285
# 3    3rd   706
# 4   Crew   885

或者data.table:

代码语言:javascript
运行
复制
library(data.table)
as.data.table(Titanic)[, .(n = sum(N)), keyby=Class]

您可以创建一个模糊名称向量,然后在dplyr或get(dimname)或data.table中循环执行单向或双向频率。

示例:

代码语言:javascript
运行
复制
dims <- c('Class','Sex','Age')
dt <- as.data.table(Titanic)
for(dim in dims)
  print(dt[, .(n = sum(N)), keyby = get(dim)])

请注意,get是传递变量名以编程方式执行频率表的一种方法。

要在data.table中执行双向表,可以使用dcast

代码语言:javascript
运行
复制
dcast.data.table(dt, Age ~ Class, value.var='N', fun.aggregate=sum)
#      Age 1st 2nd 3rd Crew
# 1: Adult 319 261 627  885
# 2: Child   6  24  79    0

要用dcast生成多个双向表,您需要编程构建公式,例如formula = as.formula(paste(v1,v2,sep='~'))

由于data.table语法需要一些习惯,所以如果您想在双向表的“tidyverse”中停留,您可以这样做:

代码语言:javascript
运行
复制
data(Titanic)
library('dplyr')
library('tidyr')

as.data.frame(Titanic) %>% 
  group_by(Age,Class) %>% 
  summarise(n=sum(Freq)) %>%
  spread(Class, n)

#      Age   1st   2nd   3rd  Crew
#   (fctr) (dbl) (dbl) (dbl) (dbl)
# 1  Child     6    24    79     0
# 2  Adult   319   261   627   885
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39646366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档