3 回答
TA贡献1797条经验 获得超6个赞
您可以使用简单的table()语句来完成此操作。您可以通过设置因子水平来获得所需的响应。
sample.data$Decision <- factor(x = sample.data$Decision,
levels = c("Referred","Approved","Declined"))
table(Case = sample.data$Case,sample.data$Decision)
Case Referred Approved Declined
1 3 1 0
2 1 0 1
3 2 0 1
4 0 1 0
5 0 0 1
TA贡献1811条经验 获得超5个赞
-package dcast函数中的聚合参数reshape2默认为length(= count)。在data.table-package中,dcast实现了该函数的改进版本。因此,在您的情况下,这将是:
library('reshape2') # or library('data.table')
newdf <- dcast(sample.data, Case ~ Decision)
或显式使用参数:
newdf <- dcast(sample.data, Case ~ Decision,
value.var = "Decision", fun.aggregate = length)
这给出了以下数据框:
> newdf
Case Approved Declined Referred
1 1 1 0 3
2 2 0 1 1
3 3 0 1 2
4 4 1 0 0
5 5 0 1 0
如果未指定聚合函数,则会收到一条警告,告知您dcast正在使用它lenght作为默认值。
TA贡献1891条经验 获得超3个赞
这是dplyr + tidyr方法:
if (!require("pacman")) install.packages("pacman")
pacman::p_load(dplyr, tidyr)
sample.data %>%
count(Case, Decision) %>%
spread(Decision, n, fill = 0)
## Case Approved Declined Referred
## (dbl) (dbl) (dbl) (dbl)
## 1 1 1 0 3
## 2 2 0 1 1
## 3 3 0 1 2
## 4 4 1 0 0
## 5 5 0 1 0
- 3 回答
- 0 关注
- 676 浏览
添加回答
举报