将计数转换为长格式到宽格式的简单方法

我有以下数据集:


sample.data <- data.frame(Step = c(1,2,3,4,1,2,1,2,3,1,1),

                          Case = c(1,1,1,1,2,2,3,3,3,4,5),

                          Decision = c("Referred","Referred","Referred","Approved","Referred","Declined","Referred","Referred","Declined","Approved","Declined"))


sample.data


   Step Case Decision

1     1    1 Referred

2     2    1 Referred

3     3    1 Referred

4     4    1 Approved

5     1    2 Referred

6     2    2 Declined

7     1    3 Referred

8     2    3 Referred

9     3    3 Declined

10    1    4 Approved

11    1    5 Declined

R中是否可以将其转换为宽表格式,并在标头上做出决定,并且每个单元格的值就是出现次数,例如:


Case    Referred    Approved    Declined

1          3           1            0

2          1           0            1

3          2           0            1

4          0           1            0

5          0           0            1


Qyouu
浏览 621回答 3
3回答

互换的青春

您可以使用简单的table()语句来完成此操作。您可以通过设置因子水平来获得所需的响应。sample.data$Decision <- factor(x = sample.data$Decision,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;levels = c("Referred","Approved","Declined"))table(Case = sample.data$Case,sample.data$Decision)Case Referred Approved Declined&nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp;5&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1

四季花海

-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,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value.var = "Decision", fun.aggregate = length)这给出了以下数据框:> newdf&nbsp; Case Approved Declined Referred1&nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 32&nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 13&nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 24&nbsp; &nbsp; 4&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 05&nbsp; &nbsp; 5&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0如果未指定聚合函数,则会收到一条警告,告知您dcast正在使用它lenght作为默认值。

万千封印

这是dplyr + tidyr方法:if (!require("pacman")) install.packages("pacman")pacman::p_load(dplyr, tidyr)sample.data %>%&nbsp; &nbsp; count(Case, Decision) %>%&nbsp; &nbsp; spread(Decision, n, fill = 0)##&nbsp; &nbsp; Case Approved Declined Referred##&nbsp; &nbsp;(dbl)&nbsp; &nbsp; (dbl)&nbsp; &nbsp; (dbl)&nbsp; &nbsp; (dbl)## 1&nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 3## 2&nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 1## 3&nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 2## 4&nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 0## 5&nbsp; &nbsp; &nbsp;5&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 0
打开App,查看更多内容
随时随地看视频慕课网APP