質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

1回答

4027閲覧

Rにより連続したデータ数をカウントしたいです。

orgil

総合スコア10

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2019/01/04 09:54

ID毎の形質の”0”と”1”の連続した長さとその回数をカウントしたいです。
データ:

ID形質1形質2
a01
a01
a11
a00
a10
a10
b01
b11
b11
b01
b10
b11

欲しい結果は
|ID|値|連続長さ|形質1についての回数|形質2についての回数|
|:--|:--:|--:|--:|
|a|0|1|1|0
|a|0|2|1|0
|a|0|3|0|1
|a|0|4|0|0
|b|1|1|0|1
|b|1|2|2|0
|b|1|3|0|0
|b|1|4|0|1

表の見方は(2行目)IDがaのとき”0”が2連続の長さで、形質1では1回、形質2では0回になります。
このようにカウントする方法を知りたいです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「連続した長さとその回数」を得るにはRle関数が使えます。

> Rle(c(1,1,0,0,0,1,1,1,0,0,0,0)) numeric-Rle of length 12 with 4 runs Lengths: 2 3 3 4 Values : 1 0 1 0

データフレームのコラムごと/値ごとにRleを呼び出すようなループを組めば良いと思います。

投稿2019/01/04 13:53

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

orgil

2019/01/07 00:26

ありがとうございました。 大変助かりました。 b<- cbind(ID=c(rep("a",6), rep("b", 6)), 形質1=c(0,0,1,0,1,1,0,1,1,0,1,1),形質2=c(1,1,1,0,0,0,1,1,1,1,0,1)) > b ID 形質1 形質2 [1,] "a" "0" "1" [2,] "a" "0" "1" [3,] "a" "1" "1" [4,] "a" "0" "0" [5,] "a" "1" "0" [6,] "a" "1" "0" [7,] "b" "0" "1" [8,] "b" "1" "1" [9,] "b" "1" "1" [10,] "b" "0" "1" [11,] "b" "1" "0" [12,] "b" "1" "1" > tapply(b[,2], b[,1], rle) $`a` Run Length Encoding lengths: int [1:4] 2 1 1 2 values : chr [1:4] "0" "1" "0" "1" $b Run Length Encoding lengths: int [1:4] 1 2 1 2 values : chr [1:4] "0" "1" "0" "1" さらに、質問したいですがよろしくお願いいたします。 今回はID毎にグループ化してカウントすることができました。 さらに、IDと形質2毎にグループ化して形質1をカウントしたいです。 例:IDがa、形質2が1のときの形質2をカウントしたい、結果は長さ:2、1で、値:0、1になります。 よろしくお願いいたします。
KojiDoi

2019/01/07 03:59

質問はつぎ足さないで新しい記事に書いてください。
orgil

2019/01/07 04:12

了解いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問