Rで解析:データ内容の置換に便利かも「wildcard」パッケージ


data.frameの内容を置換するのに便利なパッケージだと思います。因子を削除するコマンドも収録されています。

パッケージバージョンは1.0.3。windows 10のR version 3.4.1で動作を確認しています。


パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("wildcard")

コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("wildcard")

###データ例の作成#####
n <- 6
TestData <- data.frame(Group = sample(paste0("Group", 1:5), n, replace = TRUE),
                       Data1 = round(rnorm(n), 2),
                       Data2 = round(rnorm(n) + rnorm(n) + rnorm(n), 2),
                       Data3 = sample(0:1, n, replace = TRUE),
                       Data4 = sample(LETTERS[1:26], n, replace = TRUE))
#内容確認
TestData
   Group Data1 Data2 Data3 Data4
1 Group4  1.00  0.90     1     T
2 Group4  0.44  2.73     0     S
3 Group2  2.06 -3.31     0     Q
4 Group4 -1.45  0.29     1     O
5 Group5  0.00 -2.11     1     Q
6 Group4  1.00 -0.28     0     I
########

#指定内容またはルールで置換:wildcardコマンド
#データを指定:dfオプション
#指定内容:wildcardオプション
#置換内容:valuesオプション
#置換内容を全て適応:expand;TRUE;FALSEで順番に適応
wildcard(df = TestData, wildcard = "0", values = c("ZERO", "KARADA"),
         expand = TRUE, rules = NULL)
    Group     Data1      Data2  Data3 Data4
1  Group4         1     ZERO.9      1     T
2  Group4         1   KARADA.9      1     T
3  Group4   ZERO.44       2.73   ZERO     S
4  Group4 KARADA.44       2.73 KARADA     S
5  Group2   2.ZERO6      -3.31   ZERO     Q
6  Group2 2.KARADA6      -3.31 KARADA     Q
7  Group4     -1.45    ZERO.29      1     O
8  Group4     -1.45  KARADA.29      1     O
9  Group5      ZERO      -2.11      1     Q
10 Group5    KARADA      -2.11      1     Q
11 Group4         1   -ZERO.28   ZERO     I
12 Group4         1 -KARADA.28 KARADA     I

#ルールで置換
#Group2が全て適応,0が順番に適応
Rules <- list(Group2 = c("G2", "G3"), "0" = c("Zero", ""))
wildcard(df = TestData, expand = c(TRUE, FALSE), rules = Rules)
   Group   Data1    Data2 Data3 Data4
1 Group4       1   Zero.9     1     T
2 Group4 Zero.44     2.73  Zero     S
3     G2     2.6    -3.31           Q
4     G3 2.Zero6    -3.31  Zero     Q
5 Group4   -1.45      .29     1     O
6 Group5            -2.11     1     Q
7 Group4       1 -Zero.28           I

#データ内容を行方向に繰り返す:expandrowsコマンド
#繰り返し方法の指定:typeオプション;"each","times"が指定可能
expandrows(df = TestData, n = 2, type = "times")
    Group Data1 Data2 Data3 Data4
1  Group4  1.00  0.90     1     T
2  Group4  0.44  2.73     0     S
3  Group2  2.06 -3.31     0     Q
4  Group4 -1.45  0.29     1     O
5  Group5  0.00 -2.11     1     Q
6  Group4  1.00 -0.28     0     I
7  Group4  1.00  0.90     1     T
8  Group4  0.44  2.73     0     S
9  Group2  2.06 -3.31     0     Q
10 Group4 -1.45  0.29     1     O
11 Group5  0.00 -2.11     1     Q
12 Group4  1.00 -0.28     0     I

#因子の削除:nofactorsコマンド
#GroupとData4が因子
str(TestData)
'data.frame':	6 obs. of  5 variables:
$ Group: Factor w/ 3 levels "Group2","Group4",..: 2 2 1 2 3 2
$ Data1: num  1 0.44 2.06 -1.45 0 1
$ Data2: num  0.9 2.73 -3.31 0.29 -2.11 -0.28
$ Data3: int  1 0 0 1 1 0
$ Data4: Factor w/ 5 levels "I","O","Q","S",..: 5 4 3 2 3 1
#GroupとData4が文字になる
str(nofactors(df = TestData))
'data.frame':	6 obs. of  5 variables:
$ Group: chr  "Group4" "Group4" "Group2" "Group4" ...
$ Data1: num  1 0.44 2.06 -1.45 0 1
$ Data2: num  0.9 2.73 -3.31 0.29 -2.11 -0.28
$ Data3: int  1 0 0 1 1 0
$ Data4: chr  "T" "S" "Q" "O" ...

少しでも、あなたの解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク