2017-11-06 6 views
0

私は2つのデータフレームを持っています.1つは3つのインデックス変数を持つリストです。ユーザー、ログ、およびパスのうち1つはこれらの変数ごとに多数の値を持ちます。関数の引数としてcolumの値を使用します

大きなDFから多くの値を小さなDF内のリストに渡そうとしているので、後で要約統計を実行できます。

Small.DF 
User,Log,Pass,Valid.Event.Pass 
1 11 76 Yes 
1 11 46 Yes 
1 15 38 Yes 
1 15 47 Yes 
1 15 386 Yes 
1 15 388 Yes 
1 8 119 Yes 
1 8 120 Yes 
1 8 121 Yes 
1 8 122 Yes 
1 8 123 Yes 
1 16 35 Yes 
1 16 37 Yes 
1 17 22 Yes 
1 17 102 Yes 
1 12 203 Yes 
1 12 205 Yes 
1 12 207 Yes 
1 12 209 Yes 
1 12 24 Yes 
2 13 29 Yes 
2 1 31 Yes 


Big.DF 
    User,Log,Pass,Passing.Distance 
    1 11 0 739.5 
    1 11 0 411.5 
    1 11 0 0 
    1 11 0 739.5 
    1 11 0 0 
    1 11 0 739.5 
    1 11 0 0 
    1 0 0 739.5 
    1 0 0 0 
    1 0 0 739.5 
    1 0 0 0 
    1 0 0 739.5 
    1 0 0 0 
    1 0 0 739.5 
    1 15 76 371.5 
    1 15 76 371.5 
    1 15 76 370.5 
    1 15 767 368.5 
    1 15 76 367.5 
    1 15 76 366.5 
    1 15 76 365.5 
    1 15 76 364.5 
    1 15 76 364.5 
    1 15 76 363.5 
    1 15 76 364.5 
    1 15 76 0 
    1 15 76 739.5 
    1 15 76 369.5 
    1 15 76 0 
    1 15 76 739.5 
    1 15 0 0 
    1 15 0 739.5 
    1 15 0 0 
    1 15 0 739.5 
    1 15 0 0 
    1 15 0 739.5 
    1 15 0 0 
    1 15 0 739.5 
    1 15 0 0 
    1 15 0 739.5 
    1 15 0 0 
    1 15 0 739.5 
    1 15 0 0 

私はBig.DFのこれらの3つの変数に一致する値をサブセット化することに興味がありますが、100の値は前と後の100の値です。

newfn<- function(User,Log,Pass){ 
test<-subset(Sensor.Data[(min(which(Big.DF$User==User&Big.DF$Log==Log & Big.DF$Pass==Pass))-100):(max(which(Big.DF$User==User&Big.DF$Log==Log & Big.DF$Pass==Pass))+100),],select=Passing.Distance) 
} 

しかし、私はsmalldfの各行の上にこの機能を適用する方法を見つけ出すことはできません:私はそのようなリストを作成する機能を書いて、これを達成するために

私は考えることができる最も簡単な説明は

Small.df$listofvalues<- newfn(Small.df$User,Small.df$Log,Small.df$Pass) 

だろう。しかし、それは、それはこのようなものになるだろう適用した場合、それは

....私が見ることができるいくつかの理由のために動作しません。

Small.df$listofvalues<-apply(smalldf,1,newfn) 

しかし、これはうまくいきません....そして掃引もどちらかといえば適切ではないようです。私は行方不明の機能はありますか?

+0

をそれを考え出しました。私はこの機能の周りいじるしてきた –

+0

.... ベスト私が思い付くことができは SmallDF2である< - Small.DF%>% 変異させる(listoflistsの=のMAP2(ユーザー、ログイン、パス、newfn) )%>% print() 私は間違っていますか? –

答えて

0

は、私がtidyverse、具体的に `` nest`とmap`機能を使用することをお勧め....

rowfinder<- function(User,Log,Pass){ 
    subset(Sensor.Data[(min(which(Sensor.Data$User==User&Sensor.Data$Log==Log & Sensor.Data$Pass==Pass))-100):(max(which(Sensor.Data$User==User&Sensor.Data$Log==Log & Sensor.Data$Pass==Pass))+100),],select=LH.passing.distance) 
    } 
    SmallDF$LHvalues<-apply(SmallDF[,c('User','Log','Pass')], 1, function(y) rowfinder(y['User'],y['Log'],y['Pass'])) 
関連する問題