ore.frame
オブジェクトの列と行のデータを選択および順序付けするOREdplyr
関数。
表3-2 列と行の選択および順序付け
関数 | 説明 |
---|---|
|
指定された列で行を順序付けします。 |
|
降順で |
|
指定された列で入力 |
|
指定された条件と一致する行をフィルタします。 |
|
新しい列を追加します。 |
|
指定された列の名前を変更し、すべての列を保持します。 |
|
指定された列のみを選択します。 |
|
位置で行を選択します。順序付けられた入力 |
|
新しい列を追加し、既存の列を削除します。 |
OREdplyr
パッケージのselect
およびrename
関数の例。
例3-65 列の選択
次の例では、iris data.frame
オブジェクトでore.push
関数を使用して作成されるIRIS ore.frame
オブジェクトの列を選択します。
IRIS <- ore.push(iris) # Select the specified column names(select(IRIS, Petal.Length)) names(select(IRIS, petal_length = Petal.Length)) # Drop the specified column names(select(IRIS, -Petal.Length)) # rename() keeps all variables names(rename(IRIS, petal_length = Petal.Length))
この例のリスト
R> IRIS <- ore.push(iris) R> # Select the specified column R> names(select(IRIS, Petal.Length)) [1] "Petal.Length" R> names(select(IRIS, petal_length = Petal.Length)) [1] "petal_length" R> R> # Drop the specified column R> names(select(IRIS, -Petal.Length)) [1] "Sepal.Length" "Sepal.Width" "Petal.Width" "Species" R> R> # rename() keeps all variables R> names(rename(IRIS, petal_length = Petal.Length)) [1] "Sepal.Length" "Sepal.Width" "petal_length" "Petal.Width" "Species"
OREdplyr
パッケージのselect_
関数の例。
例3-66 selectを使用したプログラミング
次の例では、select_
関数を使用して、iris data.frame
オブジェクトでore.push
関数を使用して作成されるIRIS ore.frame
オブジェクトの列を選択します。
IRIS <- ore.push(iris) # Use ~, double quote, or quote function to specify the column to select head(select_(IRIS, ~Petal.Length)) head(select_(IRIS, "Petal.Length")) head(select_(IRIS, quote(-Petal.Length), quote(-Petal.Width))) head(select_(IRIS, .dots = list(quote(-Petal.Length), quote(-Petal.Width))))
この例のリスト
R> IRIS <- ore.push(iris) R> # Use ~, double quote, or quote function to specify the column to select R> head(select_(IRIS, ~Petal.Length)) Petal.Length 1 1.4 2 1.4 3 1.3 4 1.5 5 1.4 6 1.7 R> head(select_(IRIS, "Petal.Length")) Petal.Length 1 1.4 2 1.4 3 1.3 4 1.5 5 1.4 6 1.7 R> head(select_(IRIS, quote(-Petal.Length), quote(-Petal.Width))) Sepal.Length Sepal.Width Species 1 5.1 3.5 setosa 2 4.9 3.0 setosa 3 4.7 3.2 setosa 4 4.6 3.1 setosa 5 5.0 3.6 setosa 6 5.4 3.9 setosa R> head(select_(IRIS, .dots = list(quote(-Petal.Length), quote(-Petal.Width)))) Sepal.Length Sepal.Width Species 1 5.1 3.5 setosa 2 4.9 3.0 setosa 3 4.7 3.2 setosa 4 4.6 3.1 setosa 5 5.0 3.6 setosa 6 5.4 3.9 setosa
OREdplyr
パッケージのdistinct
およびarrange
関数の例。
例3-67 個別列の選択
df <- data.frame( x = sample(10, 100, rep = TRUE), y = sample(10, 100, rep = TRUE) ) DF <- ore.push(df) nrow(DF) nrow(distinct(DF)) arrange(distinct(DF, x), x) arrange(distinct(DF, y), y) # Use distinct on computed variables arrange(distinct(DF, diff = abs(x - y)), diff)
この例のリスト
R> df <- data.frame( + x = sample(10, 100, rep = TRUE), + y = sample(10, 100, rep = TRUE) + ) R> DF <- ore.push(df) R> nrow(DF) [1] 100 R> nrow(distinct(DF)) [1] 66 R> arrange(distinct(DF, x), x) x 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 R> arrange(distinct(DF, y), y) y 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 R> R> # Use distinct on computed variables R> arrange(distinct(DF, diff = abs(x - y)), diff) diff 1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9
OREdplyr
パッケージのslice
およびfilter
関数の例。
例3-68 位置による行の選択
MTCARS <- ore.push(mtcars) # Display the names of the rows in MTCARS rownames(MTCARS) # Select the first row slice(MTCARS, 1L) # Arrange the rows by horsepower, then select the first row by position MTCARS <- arrange(MTCARS, hp) slice(MTCARS, 1L) by_cyl <- group_by(MTCARS, cyl) # Grouping is ignored by slice. slice(by_cyl, 1:2) # Use filter and row_number to obtain slices per group. filter(by_cyl, row_number(hp) < 3L)
この例のリスト
R> MTCARS <- ore.push(mtcars) R> # Display the names of the rows in MTCARS R> rownames(MTCARS) [1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" "Hornet Sportabout" [6] "Valiant" "Duster 360" "Merc 240D" "Merc 230" "Merc 280" [11] "Merc 280C" "Merc 450SE" "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood" [16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128" "Honda Civic" "Toyota Corolla" [21] "Toyota Corona" "Dodge Challenger" "AMC Javelin" "Camaro Z28" "Pontiac Firebird" [26] "Fiat X1-9" "Porsche 914-2" "Lotus Europa" "Ford Pantera L" "Ferrari Dino" [31] "Maserati Bora" "Volvo 142E" R> # Select the first row R> slice(MTCARS, 1L) mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4 R> R> # Arrange the rows by horsepower, then select the first row by position R> MTCARS <- arrange(MTCARS, hp) R> slice(MTCARS, 1L) mpg cyl disp hp drat wt qsec vs am gear carb 1 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 R> R> by_cyl <- group_by(MTCARS, cyl) R> # Grouping is ignored by slice R> slice(by_cyl, 1:2) mpg cyl disp hp drat wt qsec vs am gear carb 1 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 2 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 Warning message: In slice_.ore.frame(.data, .dots = .ore.dplyr.exprall(..., env = parent.frame())) : grouping is ignored R> # Use filter and row_number to obtain slices per group R> filter(by_cyl, row_number(hp) < 3L) mpg cyl disp hp drat wt qsec vs am gear carb 1 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 2 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 3 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 5 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 6 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
OREdplyr
パッケージのarrange
およびdesc
関数の例。
例3-69 列の配置
この例では、mtcars data.frame
オブジェクトでore.push
関数を使用して作成されるore.frame
オブジェクトMTCARSの列を配置します。2番目のarrange()
呼出しは、desc()
関数をコールして降順で値を配置します。
MTCARS <- ore.push(mtcars) head(arrange(mtcars, cyl, disp)) head(arrange(MTCARS, desc(disp)))
この例のリスト
R> MTCARS <- ore.push(mtcars) R> head(arrange(MTCARS, cyl, disp)) mpg cyl disp hp drat wt qsec vs am gear carb 1 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 2 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 3 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 4 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 5 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 6 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 R> head(arrange(MTCARS, desc(disp))) mpg cyl disp hp drat wt qsec vs am gear carb 1 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4 2 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4 3 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4 4 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 6 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
OREdplyr
パッケージのfilter
関数の例。
例3-70 列のフィルタ
この例では、mtcars data.frame
オブジェクトでore.push
関数を使用して作成されるMTCARS ore.frame
オブジェクトの列をフィルタします。
MTCARS <- ore.push(mtcars) head(filter(MTCARS, cyl == 8)) # Using multiple criteria head(filter(MTCARS, cyl < 6 & vs == 1)) # Using multiple arguments is the equivalent to using & head(filter(MTCARS, cyl < 6, vs == 1))
この例のリスト
R> MTCARS <- ore.push(mtcars) R> head(filter(MTCARS, cyl == 8)) mpg cyl disp hp drat wt qsec vs am gear carb 1 18.7 8 360.0 175 3.15 3.44 17.02 0 0 3 2 2 14.3 8 360.0 245 3.21 3.57 15.84 0 0 3 4 3 16.4 8 275.8 180 3.07 4.07 17.40 0 0 3 3 4 17.3 8 275.8 180 3.07 3.73 17.60 0 0 3 3 5 15.2 8 275.8 180 3.07 3.78 18.00 0 0 3 3 6 10.4 8 472.0 205 2.93 5.25 17.98 0 0 3 4 R> head(filter(MTCARS, cyl < 6 & vs == 1)) mpg cyl disp hp drat wt qsec vs am gear carb 1 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 2 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 3 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 4 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 5 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 6 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 R> R> # Using multiple arguments is the equivalent to using & R> head(filter(MTCARS, cyl < 6, vs == 1)) mpg cyl disp hp drat wt qsec vs am gear carb 1 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 2 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 3 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 4 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 5 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 6 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
OREdplyr
パッケージのmutate
およびtransmute
関数の例。
例3-71 列の変更
この例では、mtcars data.frame
オブジェクトでore.push
関数を使用して作成されるMTCARS ore.frame
オブジェクトを使用します。
mutate
関数は、列dispから導出された値とともに別のcolumn displ_1を追加します。列をNULLに設定すると、列が削除されます。
MTCARS <- ore.push(mtcars) head(mutate(MTCARS, displ_l = disp / 61.0237)) head(transmute(MTCARS, displ_l = disp / 61.0237)) head(mutate(MTCARS, cyl = NULL)) head(mutate(MTCARS, cyl = NULL, hp = NULL, displ_l = disp / 61.0237))
この例のリスト
R> MTCARS <- ore.push(mtcars) R> head(mutate(MTCARS, displ_l = disp / 61.0237)) mpg cyl disp hp drat wt qsec vs am gear carb displ_l 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 2.621932 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 2.621932 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 1.769804 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 4.227866 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 5.899347 6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 3.687092 R> head(transmute(MTCARS, displ_l = disp / 61.0237)) displ_l 1 2.621932 2 2.621932 3 1.769804 4 4.227866 5 5.899347 6 3.687092 R> head(mutate(mtcars, cyl = NULL)) mpg disp hp drat wt qsec vs am gear carb 1 21.0 160 110 3.90 2.620 16.46 0 1 4 4 2 21.0 160 110 3.90 2.875 17.02 0 1 4 4 3 22.8 108 93 3.85 2.320 18.61 1 1 4 1 4 21.4 258 110 3.08 3.215 19.44 1 0 3 1 5 18.7 360 175 3.15 3.440 17.02 0 0 3 2 6 18.1 225 105 2.76 3.460 20.22 1 0 3 1 R> head(mutate(mtcars, cyl = NULL, hp = NULL, displ_l = disp / 61.0237)) mpg disp drat wt qsec vs am gear carb displ_l 1 21.0 160 3.90 2.620 16.46 0 1 4 4 2.621932 2 21.0 160 3.90 2.875 17.02 0 1 4 4 2.621932 3 22.8 108 3.85 2.320 18.61 1 1 4 1 1.769804 4 21.4 258 3.08 3.215 19.44 1 0 3 1 4.227866 5 18.7 360 3.15 3.440 17.02 0 0 3 2 5.899347 6 18.1 225 2.76 3.460 20.22 1 0 3 1 3.687092