在R中子集一个表

在R中子集一个表,r,subset,R,Subset,在R中,我从数据集创建了一个三维表。这三个变量都是因子,标记为H、O和S。这是我用来简单创建表的代码: attach(df) test <- table(H, O, S) 目标是使用该表对象,将其子集,并生成第二个表。基本上,我只想要H的“隔离”和“ICU”,O的“生病”和“恢复”,只有S1,所以它基本上变成了下面的二维表格: +-----------+------+-----------+ | | Sick | Recovered | +-----------+--

在R中,我从数据集创建了一个三维表。这三个变量都是因子,标记为H、O和S。这是我用来简单创建表的代码:

attach(df)
test <- table(H, O, S)
目标是使用该表对象,将其子集,并生成第二个表。基本上,我只想要H的“隔离”和“ICU”,O的“生病”和“恢复”,只有S1,所以它基本上变成了下面的二维表格:

+-----------+------+-----------+
|           | Sick | Recovered |
+-----------+------+-----------+
| Isolation |   64 |       153 |
| ICU       |    0 |         1 |
+-----------+------+-----------+
S = S1
我知道我可以先对数据帧进行子集划分,然后创建新表,但目标是对表对象本身进行子集划分。我不知道如何从每个维度中检索某些值并生成缩减表

编辑:回答

我现在发现了一个更简单的方法。我所需要做的就是在各自的方向上引用特定的列。因此,更简单的解决方案如下:

> test[1:2,2:3,1]
                O
H                Sick Healed
  Isolation      64    153
  ICU            0     1

在运行
之前对数据进行子集划分,例如:

ftable(table(mtcars[, c("cyl", "gear", "vs")]))
# vs  0  1
# cyl gear         
# 4   3        0  1
#     4        0  8
#     5        1  1
# 6   3        0  2
#     4        2  2
#     5        1  0
# 8   3       12  0
#     4        0  0
#     5        2  0

# subset then run table
ftable(table(mtcars[ mtcars$gear == 4, c("cyl", "gear", "vs")]))       
#          vs 0 1
# cyl gear       
# 4   4       0 8
# 6   4       2 2

你能发布样本数据吗?请使用
dput(df)
的输出编辑问题。或者,如果输出的dput(head(df,20))
太大,谢谢您的反馈。我编辑了这个问题,并添加了前20个值。谢谢,但这不太正确。当我子集并输入想要保留的值时,生成的表不会删除不需要的值。它保留它们并在表中为它们的值填充0,而不是将它们全部删除。我希望表是2x2,但仍然是3x3。很抱歉,由于用户错误,我遇到了此问题。我刷新了我的R会话,现在它似乎正在按预期工作。非常感谢。
ftable(table(mtcars[, c("cyl", "gear", "vs")]))
# vs  0  1
# cyl gear         
# 4   3        0  1
#     4        0  8
#     5        1  1
# 6   3        0  2
#     4        2  2
#     5        1  0
# 8   3       12  0
#     4        0  0
#     5        2  0

# subset then run table
ftable(table(mtcars[ mtcars$gear == 4, c("cyl", "gear", "vs")]))       
#          vs 0 1
# cyl gear       
# 4   4       0 8
# 6   4       2 2