-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME-ja.Rmd
123 lines (82 loc) · 3.46 KB
/
README-ja.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "50%"
)
options(width=400)
```
# totalize
<!-- badges: start -->
<!-- badges: end -->
集計表を作成し、小計・合計を計算するパッケージ
## インストール
次のコマンドでGitHubからインストールできます。
``` r
devtools::install_github("ichiromurata/totalize")
```
# 概要
Rにはデータを集計する様々な関数があります。
`datasets::CO2`のデータを例に取りましょう。データ数のカウントは`table()`で行えます。
```{r}
table(interaction(datasets::CO2$Type, datasets::CO2$Treatment))
```
値の足し上げは`by()`や、
```{r}
by(datasets::CO2$uptake, datasets::CO2[c("Type", "Treatment")], sum)
```
`stats::aggregate()`を使うことができます。
```{r}
stats::aggregate(datasets::CO2["uptake"], datasets::CO2[c("Type", "Treatment")], sum)
```
しかしこれらを使って小計や合計(上の例では"Type"計、"Treatment"計、合計)を並べた表を
作るには、何回かに分けてそれらを別々に算出し、表を結合する必要があります。
1つのデータレコードを小計と合計に同時に足さなければいけないため、
上のようなコマンドを1回実行するだけではすべてを算出できません。
`totalize`はこれをまとめて行います。
```{r}
library(totalize)
totalize(datasets::CO2, c(Type, Treatment), val=uptake, asDF=TRUE)
```
さらに、2次元の集計表に展開することができます。
```{r}
totalize(datasets::CO2, row=Type, col=Treatment, val=uptake)
```
3つ以上の変数があっても、集計表に展開できます。
```{r}
totalize(datasets::CO2, row=Type, col=c(Treatment, conc), val=uptake)
totalize(datasets::CO2, row=c(Type, conc), col=Treatment, val=uptake)
```
`FUN=sum`などの場合は`na.rm=TRUE`を引数に追加すると、データ中のNAを無視できます。
```{r}
# Missing values turn the totals into NA
transform(datasets::CO2, uptake_na=replace(uptake, c(1, 10), NA)) |>
totalize(row=Type, col=c(Treatment, conc), val=uptake_na)
# Ignoring NAs
transform(datasets::CO2, uptake_na=replace(uptake, c(1, 10), NA)) |>
totalize(row=Type, col=c(Treatment, conc), val=uptake_na, na.rm=TRUE)
```
## 1行(1列)のみの表
`totailze`は1列のみの表も作成できます。
```{r}
totalize(datasets::CO2, row=c(Type, Treatment), val=uptake)
```
1行のみの表を作る場合は、上の表を転置`t()`してください。
```{r}
totalize(datasets::CO2, row=c(Type, Treatment), val=uptake) |> t()
```
# 四捨五入について
このパッケージでは四捨五入をする関数`awayfromzero()`を提供しています。
Rの`round()`関数は四捨五入ではなく偶数丸めを行います。四捨五入の関数はbase Rには含まれていません。
ただし、浮動小数点数の丸めには気を付けるべき点があります。
`awayfromzero()`のヘルプページを参照してください。
四捨五入はパイプ演算子`|>`で結んで実行できます。
```{r}
totalize(datasets::CO2, row=c(Treatment, conc), col=Type, val=uptake, FUN=mean) |>
awayfromzero(1)
```