編集---私は範囲を小さくするために質問を整理しました。R行を整理して集計する
データフレームを次の形式で集計しようとしていますが、問題が発生しています。
これは、電話システムからのisdnログ出力であるため、ログ全体に同時に発生するコールが含まれています。これらの呼び出しは、発信するのではなく、着信する性質のものです。
データフレームは、以下のようになります。
"V1" "V2""V3""V4" "V5" "V6" "V7" "V8"
"1" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189056:" "Oct 2 00:00:01.326 AEDST: ISDN Se0/0/0:15 Q931: RX <- SETUP pd = 8 callref = 0x174E "
"2" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189057:" " Bearer Capability i = 0x8090A3 "
"3" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189058:" " Standard = CCITT "
"4" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189059:" " Transfer Capability = Speech "
"5" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189060:" " Transfer Mode = Circuit "
"6" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189061:" " Transfer Rate = 64 kbit/s "
"7" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189062:" " Channel ID i = 0xA1839B "
"8" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189063:" " Preferred, Channel 27 "
"9" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189064:" " Calling Party Number i = 0x2183, '0' "
"10" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189065:" " Plan:ISDN, Type:National "
"11" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189066:" " Called Party Number i = 0xC1, '' "
"12" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189067:" " Plan:ISDN, Type:Subscriber(local) "
"13" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189068:" " Sending Complete"
"14" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189069:" "Oct 2 00:00:01.334 AEDST: ISDN Se0/0/0:15 Q931: TX -> CALL_PROC pd = 8 callref = 0x974E "
"15" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189070:" " Channel ID i = 0xA9839B "
"16" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189071:" " Exclusive, Channel 27"
"17" "Oct" "" "2" "00:00:02" "10.20.5.31" "82189072:" "Oct 2 00:00:01.350 AEDST: ISDN Se0/0/0:15 Q931: TX -> ALERTING pd = 8 callref = 0x974E "
"18" "Oct" "" "2" "00:00:02" "10.20.5.31" "82189073:" " Progress Ind i = 0x8088 - In-band info or appropriate now available "
"19" "Oct" "" "2" "00:00:02" "10.20.5.31" "82189074:" "Oct 2 00:00:01.358 AEDST: ISDN Se0/0/0:15 Q931: TX -> CONNECT pd = 8 callref = 0x974E"
"20" "Oct" "" "2" "00:00:02" "10.20.5.31" "82189075:" "Oct 2 00:00:01.382 AEDST: ISDN Se0/0/0:15 Q931: RX <- CONNECT_ACK pd = 8 callref = 0x174E"
"21" "Oct" "" "2" "00:00:19" "10.20.5.30" "81488302:" "Oct 2 00:00:18.210 AEDST: ISDN Se0/0/0:15 Q931: TX -> DISCONNECT pd = 8 callref = 0x9AC7 "
"22" "Oct" "" "2" "00:00:19" "10.20.5.30" "81488303:" " Cause i = 0x8090 - Normal call clearing"
"23" "Oct" "" "2" "00:00:19" "10.20.5.30" "81488304:" "Oct 2 00:00:18.290 AEDST: ISDN Se0/0/0:15 Q931: RX <- RELEASE pd = 8 callref = 0x1AC7"
"24" "Oct" "" "2" "00:00:19" "10.20.5.30" "81488305:" "Oct 2 00:00:18.314 AEDST: ISDN Se0/0/0:15 Q931: TX -> RELEASE_COMP pd = 8 callref = 0x9AC7"
"25" "Oct" "" "2" "00:00:21" "10.20.5.31" "82189076:" "Oct 2 00:00:21.053 AEDST: ISDN Se0/1/0:15 Q931: RX <- SETUP pd = 8 callref = 0x093A "
私は、データセットは以下のようになりたいと思います:
"V1" "V2""V3""V4" "V5" "V6" "V7" "UniqueId" "V8"
"1" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189056:" "0x174E" "Oct 2 00:00:01.326 AEDST: ISDN Se0/0/0:15 Q931: RX <- SETUP pd = 8 callref = 0x174E "
"2" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189057:" "0x174E" " Bearer Capability i = 0x8090A3 "
"3" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189058:" "0x174E" " Standard = CCITT "
....
"21" "Oct" "" "2" "00:00:19" "10.20.5.30" "81488302:" "0x9AC7" "Oct 2 00:00:18.210 AEDST: ISDN Se0/0/0:15 Q931: TX -> DISCONNECT pd = 8 callref = 0x9AC7 "
再反復する:
コール参照がありますこのデータセットを識別するユニークな方法です。 もcallrefとして0x174E(これはデータセット内でユニークなコール を見つける唯一の方法です)。 これは、要求されたデータフレームの新しい列(UniqueId)です。
また、同じcallref idまたは別のcall refのいずれかを示す別の行にヒットするまで、下の行は同じcallref idを新しい列に貼り付けます。
callrefが表示されるたびに、これらの行を1つの行に折り畳むことができる人のためのボーナスポイント。
"V1" "V2""V3""V4" "V5" "V6" "V7" "UniqueId" "V8"
"1" "Oct" "" "2" "00:00:01" "10.20.5.31" "82189056:" "0x174E" "Oct 2 00:00:01.326 AEDST: ISDN Se0/0/0:15 Q931: RX <- SETUP pd = 8 callref = 0x174E \n Bearer Capability i = 0x8090A3 \n Standard = CCITT"
に属するよう
は、例えば、私は、行1,2および3のV7列を合成しています。
Rで再生できるように再現可能な例にできますか?私はあなたのデータセットがどのようにレイアウトされているかを理解するのに苦労しています。再現可能な例については、ドキュメントを参照してください。 –
元のテーブルを、テキストファイルにコピーしてからread.table()を使ってrにインポートできる例で変更しました。これはエレガントではないかもしれませんが、これは私が行う方法を知っているものです。この変更が何らかの形で役に立ったらお知らせください。 – treeof
このテキスト形式ではなく、 'dput(log_entry)'の出力で質問を編集してください。これは、データの正確なコピー**を持つようにします。 –