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