【发布时间】:2019-09-03 11:02:30
【问题描述】:
我有一个数据框。
library(tidyverse)
df <- data.frame(
device = c('0001', '0001', '0001', '0001', '0002', '0002', '0002', '0003', '0003', '0003'),
problem = c('A', 'B', 'C', 'A', 'A', 'C', 'A', 'B', 'B', 'C'),
down = c(0, 25, 45, 12, 10, 0, 96, 66, 88, 99),
possible_up = rep(100, 10)
) %>% mutate(up = possible_up - down)
结果:
device problem down possible_up up
0001 A 0 100 100
0001 B 25 100 75
0001 C 45 100 55
0001 A 12 100 88
0002 A 10 100 90
0002 C 0 100 100
0002 A 96 100 4
0003 B 66 100 34
0003 B 88 100 12
0003 C 99 100 1
数字列代表分钟。我需要创建新表(每个设备的摘要),其中问题列中的每个类别都表示为一列,并且我需要为每个类别添加一个额外的列。
要补充的重要一点是,我需要它是动态的,因为问题列中唯一值的数量可能会有所不同。
我使用 tidyr 的扩展函数尝试了一些东西,但没有得到任何实质性的东西。
我的新表需要如下所示:
device up_sum up % down_sum down % A mins A % B mins B % C mins C %
0001 318 79.50% 82 20.50% 12 14.63% 25 30.49% 45 54.88%
0002 194 64.67% 106 35.33% 106 100.00% 0 0.00% 0 0.00%
0003 47 15.67% 253 84.33% 0 0.00% 154 60.87% 99 39.13%
up_sum 列中的值表示每个设备的 up 列的总和,down_sum 是每个设备的 down 列的总和,A %、B% 和 C% 列中的值显示问题 A、B 和 C 的停机时间百分比.
【问题讨论】:
-
你能解释一下A列中
12, 106的值吗?