R中数据的整形和计算

时间:2017-03-22 12:45:26

标签: r reshape percentage

我是R的新手,我想用它来编写一个简单的代码来显示软件缺陷的缺陷去除效率(修复缺陷/未解决的缺陷)* 100基于错误的优先级

我从Jira导出了一些数据样本:

Priority    Resolution  Created     Resolved
P3          Unresolved  28.02.2017  28.02.2017
P3          Unresolved  28.02.2017  28.02.2017
P1             Fixed    27.02.2017  06.03.2017
P2             Fixed    27.02.2017  14.03.2017
P1          Unresolved  24.02.2017  13.03.2017
P1          duplicate   21.02.2017  02.03.2017
P1             Fixed    24.02.2017  07.03.2017

我想重塑这张桌子,同时做一些计算。 使用excel数据透视表非常简单,但我想用R

编写脚本

预期产出:

Resolution  P1  P2  P3  Grand Total
duplicate   2               2
Fixed       4   4   1       9
Unresolved  2   2   4       8
Grand Total 8   6   5       19

另外,我希望看到解决方案的趋势(如下所示)

Dates   P1 unresolved   P1 fixed    P1 DRE, %          P2 unresolved    P2 fixed    P2 DRE, %
date1          5           0             0%                   20          3           15%
date1 + 7      6           2            33%                   37          4           11%
date1 + 14     9           3            33%                   40          4           10%

如何通过R编程实现这一目标?

2 个答案:

答案 0 :(得分:0)

janitor包中的这些函数模仿Excel的数据透视表:

library(janitor)
library(dplyr) # for the %>% pipe

dat %>%
  crosstab(Resolution, Priority) %>%
  add_totals_col() %>%
  add_totals_row()

#>   Resolution P1 P2 P3 Total
#> 1  duplicate  1  0  0     1
#> 2      Fixed  2  1  0     3
#> 3 Unresolved  1  0  2     3
#> 4      Total  4  1  2     7

使用的数据:

dat <- read.table(text = "Priority    Resolution  Created     Resolved
P3          Unresolved  28.02.2017  28.02.2017
                  P3          Unresolved  28.02.2017  28.02.2017
                  P1             Fixed    27.02.2017  06.03.2017
                  P2             Fixed    27.02.2017  14.03.2017
                  P1          Unresolved  24.02.2017  13.03.2017
                  P1          duplicate   21.02.2017  02.03.2017
                  P1             Fixed    24.02.2017  07.03.2017", header = TRUE)

答案 1 :(得分:0)

以下是仅使用表格的第一部分的答案。我将您的数据保存到同一目录中的文件中,逗号分隔值。

data = read.csv('jira_data.csv')
new_data = table(data$Resolution, data$Priority)
new_data = addmargins(new_data)