2016-10-07 30 views
3

グループ化されたデータフレーム(dplyrから)を取り込み、各グループのプロットを作成し、そのグループがどのグループであるかを記述する必要があります。キッカーは、私はグループ化変数が何であるか、あるいはどれくらいあるか知りません。グループ化されたデータフレーム内からグループの説明を取得

私は一緒にgは以下のように、グループ化変数名の文字のバージョンであるグループ化変数を取得するためにgroupsを使用して、.[1,g]で値にアクセスする何かを、ハッキングしました。

私はdplyrを初めて使っていますが、これは間違ったやり方であると感じています。つまり、それは本当にdplyrの本来の方法ではありません。それは私がした小さなテストで動作しますが、私は予期していないいくつかの奇妙な状況で失敗することを心配しています。あなたはどうしたの?より多くのdplyrがありますか?その方法はありますか?

私がしたことが実際には良いアイデアであることを奇妙なことに、私はすべてあなたの答えとして投稿しました。

答えて

0

これは私が一緒にハッキングしたものです。質問で説明したように、グループ化変数を取得して.[1,g]で値にアクセスするにはgroupsを使用します。ここで、gはグループ化変数名の文字バージョンです。

プロットを作成するのではなく、単にタイトルを変数としてデータフレームを作成するだけです。

library(dplyr) 
d <- as.tbl(data.frame(expand.grid(A=1:3,B=1:2,y=1:2))) 

d1 <- d %>% group_by(A) 
g <- unlist(lapply(groups(d1), paste)) 
d1 %>% do(data.frame(title=paste(paste(g, "=", .[1,g]), collapse=", "), stringsAsFactors=FALSE)) 

## Source: local data frame [3 x 2] 
## Groups: A [3] 
## 
##  A title 
## <int> <chr> 
## 1  1 A = 1 
## 2  2 A = 2 
## 3  3 A = 3 

d1 <- d %>% group_by(A, B) 
g <- unlist(lapply(groups(d1), paste)) 
d1 %>% do(data.frame(title=paste(paste(g, "=", .[1,g]), collapse=", "), stringsAsFactors=FALSE)) 
## Source: local data frame [6 x 3] 
## Groups: A, B [6] 
## 
##  A  B  title 
## <int> <int>  <chr> 
## 1  1  1 A = 1, B = 1 
## 2  1  2 A = 1, B = 2 
## 3  2  1 A = 2, B = 1 
## 4  2  2 A = 2, B = 2 
## 5  3  1 A = 3, B = 1 
## 6  3  2 A = 3, B = 2 
2
library(data.table) 

setDT(d) # or create directly as data.table 

par(mfrow = c(2, 3)) 

d[, plot(y, main = paste(names(.BY), .BY, sep = "=", collapse = ", ")), by = .(A, B)] 

enter image description here

+0

だから、誰かが私にグループ化されたデータフレームに合格した場合、どのように私はによってでこれらのグループを使用していますか? – Aaron

+0

あなたに「グループ化された」データフレームを渡す時間を無駄にしないように誰かに教えてください。しかし、彼らがそれを気にかけず、それを主張していないなら 'by = c(as.character(groups_data.frame)))' – eddi

+0

新しいdplyrのものの大ファンではないでしょうか? – Aaron

関連する問題