下面进行整洁分析的最佳数据形状是什么?
对于给定的帐户,数据提供:
帐户1总共请求支付$ 100。拨款人在“等级提高”金额上加了[$ 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创建。
答案 0 :(得分:1)
为了实现参照完整性,我实际上会丢弃很多信息,并将其分为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
通过这种方式,您可以通过totals$changed
命名totals$provided
列并从sum
中减去来计算changes$changed
和totals$requested
列,而没有创建风险任何有冲突的数据。
现在,任何一列中都没有NA
值。
原始changed
列中数字/字符数据的混合也已删除。