タグ付けされた質問 「dplyr」

group_by、summary、filter、selectなど、dplyrパッケージの関数に関連する質問には、このタグを使用します。

3
data.table対dplyr:他の人ができないことやうまくできないことはできますか?
概観 私はに比較的慣れていますがdata.table、にはあまり詳しくありませんdplyr。私はSOに現れたdplyrビネットと例をいくつか読みましたが、これまでのところ、私の結論は次のとおりです。 data.tableそしてdplyrスピードに匹敵する、多くの(すなわち> 10-100K)グループがある場合を除いて、いくつかの他の状況(下のベンチマークを参照) dplyr よりアクセスしやすい構文があります dplyr 潜在的なDB相互作用を抽象化します(またはそうします) いくつかの小さな機能の違いがあります(以下の「例/使用法」を参照) 私の心の中で2.私はそれにかなり慣れているのでdata.table、それほど重くはありませんが、両方に不慣れなユーザーにとっては、それが大きな要因になることは理解しています。どちらがより直感的であるかについての議論は避けたいと思います。これは、すでに詳しい人の観点から尋ねられた私の特定の質問とは無関係であるためdata.tableです。また、「より直感的」な方が分析が速くなることについての議論は避けたいと思います(確かにそうですが、ここでも、私が最も興味を持っていることはありません)。 質問 私が知りたいのは: パッケージに精通している人にとっては、どちらか一方のパッケージを使用してコーディングする方がはるかに簡単な分析タスクがあります(つまり、必要なキーストロークと難解性の必要なレベルの組み合わせ。 あるパッケージと別のパッケージで大幅に(つまり2倍以上)より効率的に実行される分析タスクはありますか? 最近のSOの質問の 1つで、これについてもう少し考えるようになりました。それまでは、dplyr私がすでにできることをはるかに超えるとは思わなかったからdata.tableです。ここにdplyr解決策があります(Qの最後のデータ): dat %.% group_by(name, job) %.% filter(job != "Boss" | year == min(year)) %.% mutate(cumu_job2 = cumsum(job2)) これは、data.tableソリューションでのハックの試みよりもはるかに優れていました。とは言っdata.tableても、優れたソリューションもかなり優れています(Jean-Robert、Arunに感謝します。ここでは、厳密に最も最適なソリューションよりも単一のステートメントを優先したことに注意してください)。 setDT(dat)[, .SD[job != "Boss" | year == min(year)][, cumjob := cumsum(job2)], by=list(id, job) ] 後者の構文は非常に難解に思えるかもしれdata.tableませんが、慣れていれば(つまり、より難解なトリックを使用しない場合)、実際にはかなり簡単です。 理想的には私が見てみたいことはいくつかの良い例がなかったですdplyrかdata.tableより簡潔であるか、パフォーマンスが大幅に優れているか方法であるです。 例 …
759 r  data.table  dplyr 

5
チブルのすべての行を表示/印刷します(tbl_df)
tibble(以前はtbl_df)は、dplyrRのデータフレーム操作パッケージによって作成されたデータフレームのバージョンです。誤ってデータフレームを呼び出したときに、長いテーブル出力を防ぎます。 データフレームがtibble/ tbl_dfでラップされた後、データフレーム全体(データフレームのすべての行と列)を表示するコマンドはありますか? を使用するdf[1:100,]と100行すべてが表示されますが、を使用df[1:101,]すると最初の10行しか表示されません。すべての行を簡単に表示して、すばやくスクロールしたい。 これを打ち消すdplyrコマンド、またはデータフレームのラップを解除する方法はありますか?
192 r  dplyr  options  display 

4
特定の文字列を含む行をフィルタリングする
文字列が含まれている行を基準としてデータフレームをフィルター処理する必要がありますRTB。 私は使用していdplyrます。 d.del <- df %.% group_by(TrackingPixel) %.% summarise(MonthDelivery = as.integer(sum(Revenue))) %.% arrange(desc(MonthDelivery)) で関数filterを使用できることはわかっdplyrていますが、文字列の内容をチェックするように指示する方法を正確には示していません。 特にコラムの内容を確認したいTrackingPixel。文字列にラベルが含まれている場合、RTB結果から行を削除します。
188 r  filter  dplyr 


7
dplyr tbl列をベクトルとして抽出する
データベースのバックエンドを持つtblから、dplyr tblの1つの列をベクトルとして取得するより簡単な方法はありますか(つまり、データフレーム/テーブルは直接サブセット化できません)。 require(dplyr) db <- src_sqlite(tempfile(), create = TRUE) iris2 <- copy_to(db, iris) iris2$Species # NULL それは簡単すぎるので、 collect(select(iris2, Species))[, 1] # [1] "setosa" "setosa" "setosa" "setosa" etc. しかし、それは少し不器用に思えます。

8
複数の警告「不明な列」の修正
すべての種類のコマンド(たとえば、パッケージに更新プログラムをインストールするためのstr(x))について、「不明な列」という複数の警告が常に表示されますが、これをデバッグまたは修正する方法がわかりません。 警告「不明な列」は、名前を変更したtbl_df内の変数に明らかに関連していますが、警告は、tbl_dfに関連していないように見えるすべての種類のコマンド(たとえば、パッケージへのアップデートのインストール、str(x)、xは単に文字ベクトル)。
170 r  dplyr 

9
`dplyr`で動的変数名を使用する
を使用dplyr::mutate()して、データフレームに複数の新しい列を作成します。列名とその内容は動的に生成する必要があります。 アイリスからのデータ例: library(dplyr) iris <- tbl_df(iris) Petal.Width変数から新しい列を変更する関数を作成しました。 multipetal <- function(df, n) { varname <- paste("petal", n , sep=".") df <- mutate(df, varname = Petal.Width * n) ## problem arises here df } 次に、列を構築するためのループを作成します。 for(i in 2:5) { iris <- multipetal(df=iris, n=i) } ただし、mutateはvarnameをリテラル変数名と見なすため、ループは4つ(petal.2-petal.5と呼ばれる)ではなく、1つの新しい変数(varnameと呼ばれる)のみを作成します。 mutate()動的名を変数名として使用するにはどうすればよいですか?
168 r  dplyr  r-faq 

9
文字列ベクトル入力を使用して、dplyrの複数の列でグループ化
私はplyrの理解をdplyrに変換しようとしていますが、複数の列でグループ化する方法がわかりません。 # make data with weird column names that can't be hard coded data = data.frame( asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE), a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE), value = rnorm(100) ) # get the columns we want to average within columns = names(data)[-3] # plyr - works ddply(data, columns, summarize, value=mean(value)) …
157 r  dplyr  r-faq 

7
dplyrを使用した相対周波数/比率
各グループ内の異なる値の比率を計算したいとします。たとえば、mtcarsデータを使用して、歯車の数の相対頻度をどのように計算しますかで午前と一度に(自動/手動)dplyr? library(dplyr) data(mtcars) mtcars <- tbl_df(mtcars) # count frequency mtcars %>% group_by(am, gear) %>% summarise(n = n()) # am gear n # 0 3 15 # 0 4 4 # 1 4 8 # 1 5 5 私が達成したいこと: am gear n rel.freq 0 3 15 0.7894737 0 4 4 0.2105263 …
153 r  group-by  dplyr  frequency 

9
グループ化されたデータから最初と最後の行を選択する
質問 を使用してdplyr、1つのステートメントでグループ化されたデータの上部と下部の観測/行を選択するにはどうすればよいですか? データと例 データフレームを考える df <- data.frame(id=c(1,1,1,2,2,2,3,3,3), stopId=c("a","b","c","a","b","c","a","b","c"), stopSequence=c(1,2,3,3,1,4,3,1,2)) を使用して各グループの上部と下部の観測を取得できますsliceが、2つの異なるステートメントを使用します。 firstStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(1) %>% ungroup lastStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(n()) %>% ungroup これらの2つの統計を組み合わせて、上部と下部の両方の観測を選択することができますか?
137 r  dplyr 

6
dplyrを使用して重複行を削除する
私はこのようなdata.frameを持っています- set.seed(123) df = data.frame(x=sample(0:1,10,replace=T),y=sample(0:1,10,replace=T),z=1:10) > df x y z 1 0 1 1 2 1 0 2 3 0 1 3 4 1 1 4 5 1 0 5 6 0 1 6 7 1 0 7 8 1 0 8 9 1 0 9 10 0 1 10 …
128 r  dplyr 

6
dplyrを使用してテーブルのすべての行に関数を適用しますか?
で作業するとき、すべての行に適用する必要があるスカラー関数plyrに使用すると便利であることがよくありましたadply。 例えば data(iris) library(plyr) head( adply(iris, 1, transform , Max.Len= max(Sepal.Length,Petal.Length)) ) Sepal.Length Sepal.Width Petal.Length Petal.Width Species Max.Len 1 5.1 3.5 1.4 0.2 setosa 5.1 2 4.9 3.0 1.4 0.2 setosa 4.9 3 4.7 3.2 1.3 0.2 setosa 4.7 4 4.6 3.1 1.5 0.2 setosa 4.6 5 5.0 3.6 1.4 …
121 r  plyr  dplyr 


6
dplyrの「名前変更」の代わり
私はplyrの名前変更機能が好きですrename。私は最近dplyrの使用を開始し、dplyrの関数を使用して変数の名前を変更する簡単な方法があるかどうか疑問に思っていましたrename。
118 r  rename  dplyr 

1
dplyrは複数の列または複合キーで結合できますか?
dplyrv3.0では、さまざまな変数を結合できることがわかりました。 left_join(x, y, by = c("a" = "b")に一致x.aしますy.b しかし、変数の組み合わせで結合することは可能ですか、または事前に複合キーを追加する必要がありますか? このようなもの: left_join(x, y, by = c("a c" = "b d")連結【一致するx.aとx.cする]を[ y.bかつy.d]
111 r  dplyr 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.