首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用.N时显示零的行

在使用.N时显示零的行
EN

Stack Overflow用户
提问于 2019-11-20 18:38:31
回答 2查看 58关注 0票数 1

我有一个大致类似以下内容的数据表:

代码语言:javascript
复制
DT <- data.table(disease = c(0,0,1,1,1,1),
   hospital = c(2,2,4,3,3,2))

每一行对应一个入院的人。“医院”是医院的ID号,“疾病”是特定疾病的状态。1=sick,0=not病了。

我想要计算每家医院有多少病人,也要计算没有病人的医院,以及不在这个特定data.table中的医院,这样我就可以指定有多少医院应该在我的最终表格中。

通过使用:DT[disease==1, .N, keyby= hospital],我可以获得

代码语言:javascript
复制
   hospital N
1:        2 2
2:        3 1
3:        4 1

但如果f.ex。我希望医院的数量是5,我得到的data.table (它不一定是一个data.table,它也可以是一个矩阵)看起来像这样:

代码语言:javascript
复制
   hospital N
1:        1 0
2:        2 2
2:        3 1
3:        4 1
5:        5 0

最好是排序的。它也可以是N的向量,只要它统计的是零事件的医院(但然后它肯定必须排序)。

我有一个相当大的数据集(也有其他列),这是在循环中进行的,所以它必须相当快。

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2019-11-20 18:48:59

我认为这是一个错误,因为样本数据和预期输出似乎不匹配(请参阅上面的评论)。

除此之外,您还可以使用table

代码语言:javascript
复制
table(DT[, hospital := factor(hospital, 1:5)])[2, ]
#1 2 3 4 5
#0 1 2 1 0

或者,您可能想要disease = 0disease = 1计数之和?

代码语言:javascript
复制
colSums(table(DT[, hospital := factor(hospital, 1:5)]))
#1 2 3 4 5
#0 3 2 1 0

在这两种情况下,返回的对象都是一个命名的int向量。

票数 1
EN

Stack Overflow用户

发布于 2019-11-20 18:50:56

代码语言:javascript
复制
DT[.(hospital = 1:5, disease = 1), on = .(hospital, disease), .N, by = .EACHI
   ][, .(hospital, N)]

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

https://stackoverflow.com/questions/58952312

复制
相关文章

相似问题

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