この質問は、group_by関数の正しい機能を理解するのに適しています。Rでは、dplyrのgroup_byはどのように機能しますか?
私は5つのバイナリ変数(これらの変数の意味は重要ではない)といくつかのユーザを表す1つの変数idを持つデータフレームを持っているとします。例えば:私は、各ユーザーのためにそれをチェックすることができる機能を構築します
id<- c("A","A" , "B" , "B")
d<- as.data.frame(id)
d$d1<- c(1,0,1,0)
d$d2<- c(1,0,1,0)
d$d3<- c(0,1,1,0)
d$d4<- c(0,1,0,1)
d$d5<- c(0,1,0,0)
> d
id d1 d2 d3 d4 d5
1 A 1 1 0 0 0
2 A 0 0 1 1 1
3 B 1 1 1 0 0
4 B 0 0 0 1 0
、AとBは、D5に変数d1はそれらのすべてに1が含まれています。
verificator<- function(d)
{
r<- prod(apply(d[,2:6],2, sum))
r<- as.logical(r)
return(r)
}
たとえば、Aユーザーの場合、d1からd5までのすべてに1があります。
verificator(d[1:2,])
[1] TRUE
しかし、Bのユーザーのために、我々は持っている
verificator(d[3:4,])
[1] FALSE
私はD行列を評価するためにdplyr機能を使用する場合、間違って何かがあります:
d2<- d %>% group_by(id) %>% summarise(one = verificator(.))
d2
Source: local data frame [2 x 2]
id one
1 A TRUE
2 B TRUE
はなぜこれを行いますが、 Bユーザーに対してTRUEを返しますか?
私はそれが最も優雅だかどうかわからないんだけど、私はおそらく 'D%>%GROUP_BY(ID)%>%summarise_each(低速運行(合計))%>%GROUP_BY(id)を行いたいです%>集約%(1 = as エラー:引数 "d"が指定されていません。 – alistaire