具有逐项更改的数据形状

Shape of Data with Itemized Changes

下面数据的最佳形状是什么以进行整洁分析?

对于给定的帐户,数据提供:

为 Account1 请求了总计 100 美元。由于外汇波动,拨款人将 "grade increase," 的金额增加了 [$10],但减少了 [-$20]。总更改金额为 - 10 美元。提供的总金额为 90 美元。

我怎样才能以一种既保留逐条解释又允许分组、变异等的方式整理这些数据

library(tidyverse)

tibble(account = c("Account.1", "Account.1", "Account.1"),
       requested = c(100, NA, NA),
       changed  = c("-10", "[10]", "[-20]"),
       explanation = c(NA, "grade increase", "foreign currency adjustment"),
       provided = c(90, NA, NA) )

#> # A tibble: 3 x 5
#>   account   requested changed explanation                 provided
#>   <chr>         <dbl> <chr>   <chr>                          <dbl>
#> 1 Account.1       100 -10     <NA>                              90
#> 2 Account.1        NA [10]    grade increase                    NA
#> 3 Account.1        NA [-20]   foreign currency adjustment       NA
```

reprex package (v0.2.0) 创建于 2018-06-19。

为了实现参照完整性,我实际上删除了很多信息并将其分成 2 个表:

totals <- dat[!is.na(dat$requested), -c(3,4,5)]
changes <- dat[is.na(dat$requested), c(1,3,4)]
changes$changed <- as.numeric(gsub("[][]","", changes$changed))

totals

#    account requested
#1 Account.1       100

changes

#    account changed                 explanation
#2 Account.1      10              grade increase
#3 Account.1     -20 foreign currency adjustment

这样您就可以通过 sum-ming changes$changed 列并从 totals$requested 中减去来计算 totals$changedtotals$provided 列,没有风险创建任何冲突数据。
现在任何列中也没有 NA 个值。
原始 changed 列中 numeric/character 数据的混合也已删除。