2017-08-13 15 views
-2

私はRを使用してデータ操作を実行しています。パターンの2回の出現の間にあるすべての行を抽出したい。データフレーム画像を添付しました。データフレーム列の2つのパターン発生間のデータの抽出R

「edu-hist-mark」から「objectives-mark」までのすべての行をパターンとして「mark」を使用して抽出したいとします。しかし、私はそれを達成する方法がわかりません。助けをお待ちしています。おかげさまで

編集:いくつかの操作をした後 、ここではデータフレームがある:

はデータ<ここ

をコードを入力します - data.frame(CLASS_NAMEの=のC( "EDU-HIST-マーク"、」 「日付」、「日付」、「日付」、「教育」、「資格」、「役割」、「会社」、「目的マーク」、「追加情報」、 「教育と資格」、2000年、「イリノイ科学技術研究院」、「科学、コンピュータ科学の修士号」、1999,2000、「マハラシュトラ州立大学(マハラシュトラ州立大学)技術 "、"学士号 "、"機械技術者SUMMARY 『は、『」、 『エンタープライズソリューションアーキテクト』、』リエゾン・テクノロジーズINGの:、出版物:』、 『アブヘイDaftari』))以下のコードで

+1

スクリーンショットを投稿しないでください。 'dput'を使ってデータを共有してください。 – www

+0

あなたのデータがDBの形をしているならば、行はいつも同じ順序ではありません。コード/より良い説明なしでは、あなたが達成したいものを推測することは難しいです – xhudik

+0

@xhudik:ここで見られる唯一のパターンは、いくつかの行に、それらの間のすべての行を抽出するために使用する単語「マーク」があることです。データはDBからのものではありません。しかし、私はたくさんのデータフレームを扱っていて、すべてがedu-hist-markのような列名、または 'mark'という単語を含む列名を持っています。 – Vishnu

答えて

0

、私はあなたの最初の列が含まれているインスタンスのインデックスを見つけますそのパターンの最初のインスタンスと2番目のインスタンスの間のすべての行を検索するために、データセットをサブセット化します。そのパターンのインスタンスが3つ以上ある場合は、データをサブセット化する方法を反映するように索引を変更できます。お役に立てれば!

Data[c(c(as.list(which(grepl("mark", Data$class_name)))[[1]]:as.list(which(grepl("mark", Data$class_name)))[[2]])), ] 
+0

@ sparkh20:これは動作します!どうもありがとう。私は質問があります: "edu-hist-mark"で始まるすべての行を "hist"の次の出現箇所に選択したい場合は、コードをどのように変更できますか?私は多くのデータフレームで作業しており、 "edu-hist-mark"は必ずしもデータフレームの先頭に表示されない可能性があるため、これを尋ねます。 – Vishnu

+0

@ sparkh20:上記の質問に対する謝罪。それはかなり明らかです。私が尋ねたかったのは、 "edu-hist-mark"で始まるすべての行をデータフレームの最後まで選択したい場合、コードをどのように変更できますか?感謝していただきありがとうございます! – Vishnu

+0

@Vishnu: "edu-hist-mark"はデータの "マーク"パターンの最初のインスタンスなので、次のようにしてデータの最後まで繰り返します: 'Data [c(c(as .list((grepl( "mark"、Data $ class_name)))[[1]]:nrow(Data)))]、 '。このコードを変更して、上記のコードを単に次のように変更することで、マークパターンの2番目のインスタンス(objects-mark)から最後まで繰り返します: 'Data [c(as.list(which(grepl(" mark "、Data $ class_name)))[[2]]:nrow(データ)))、] '。助けてうれしい! – sparkh2o

関連する問題