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

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

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

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

Q&A

解決済

2回答

2462閲覧

【R】特定の行の一つ下の行を抽出したい

nik

総合スコア13

R

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

0グッド

0クリップ

投稿2019/02/17 07:58

前提・実現したいこと

お世話になります。

特定の文字が並んだ行を含むデータがあるとき、
Rで、特定の文字が並ぶ行(例ではA、B、C)の一つ下の行のみを抽出(例では2、4、7行目)する方法をご教示いただけないでしょうか。

列1列2列3
ABC
123
ABC
567
689
ABC
269

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

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

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

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

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

guest

回答2

0

データフレームやマトリックスから特定の行を抜き出したいときは、dat[c(1,2,3),]のように行番号をベクトルにするか、data[c(F,T,F,T,F,F,F),]のように、要る行と要らない行にそれぞれTrueとFalseを対応付けたベクトルを作り、これを引数に与えてやればよいわけです。

shimikenさんは第2の方法で対処していますが、ここでは行番号の計算(+1)という過程が出てくることを考えて前者でやってみました。

まず、1,2,3列がそれぞれ"A","B","C"であるような行の行番号を抽出することを考えます。

x <- sapply(1:nrow(dat), function(x){return(ifelse(all(dat[x,]==c("A","B","C")), x, NA))})

条件に合致する行番号とNAが混じったベクトルができます。
ここでは「その一つ次の行」が必要なので、上記ベクトルのNAを取り除いて、残りをそれぞれ+1したものを使えばいいわけです。

x <- sapply(1:nrow(dat), function(x){return(ifelse(all(dat[x,]==c("A","B","C")), x, NA))}) dat[x[!is.na(x)]+1, ]

投稿2019/02/17 10:50

KojiDoi

総合スコア13727

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

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

shimiken

2019/02/17 12:04

勉強になります。
nik

2019/02/17 13:33

こちらも試してみて出来ました。 複数方法があるのですね。ありがとうございます!
guest

0

ベストアンサー

簡潔には

R

1dat <- matrix(c("A","B","C",1,2,3,"A","B","C",5,6,7,6,8,9,"A","B","C",2,6,9), nrow=7, ncol=3, byrow=T) 2dat[c(F,(dat[,1]=="A")[-nrow(dat)]),]

(A, A, A)みたいな行が混ざっているなら

R

1dat <- matrix(c("A","B","C",1,2,3,"A","B","C",5,6,7,6,8,9,"A","A","A",2,6,9), nrow=7, ncol=3, byrow=T) 2dat[c(F,((dat[,1]=="A")&(dat[,2]=="B")&(dat[,3]=="C"))[-nrow(dat)]),] 3

投稿2019/02/17 09:49

shimiken

総合スコア368

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

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

nik

2019/02/17 10:44

試してみて上手くいきました。 ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問