2016-12-07 9 views
-2

イライラ初心者の質問をマッチを数える:反復は、データフレームにRで

は、私は、文字列=(「A」、「B」、「C」)のリスト、およびデータを持っていると言います列df $ stuffのフレーム。

リスト内の各文字列をループし、その文字列がdf $ stuffに現れる回数を数え、それを累積的に追加したいとします。言い換えれば、回数「a」が現れ、さらに「b」が現れる回数に「c」が現れる回数が加えられている。私はカウント、テーブル、および集計関数を試してみたが、私が得るのはエラーだ。

これを行うには単純にきれいな方法が必要です。

+0

ようこそスタックオーバーフロー!私はあなたの質問に今すぐ答えますが、あなたの質問に答えられるようにするには、データのサンプルを 'dput(variableName)'とタイプしてコピーし、将来の質問。 'R'で再現可能なサンプルを作る方法の詳細については(あなたの質問に答える可能性を高めてください)[この記事を表示してください](http://stackoverflow.com/questions/5963269/how-to-make- a-great-r-reproducible-example)を使用します。 – Barker

答えて

0

データのサンプルがなく、出力をどのように見せてもらえませんが、私は試してみます。あなたはstringsでテーブルにtable、その後、インデックスを使用することができますdf[["stuff"]]stringsのカウントを取得するには

df <- data.frame(stuff = sample(letters[1:5], 30, replace = TRUE)) 
strings <- letters[1:3] 

:まず、私はあなたのデータがどのように見えるかを推測を行います。

table(df[["stuff"]])[strings] 
+0

これらの解決法はまだひどく複雑に思えます。私は例のデータを明確にしましょう: – TPL

0

私は何が尋ねられていたかについて異なる考えを持っていました。だから私はそれもショットを与えるだろう。

strings = c("a", "b", "c") 
stuff = c("the cat", "the bat", "the dog") 
sapply(strings, function(s) length(grep(s, stuff))) 
a b c 
2 1 1 

各文字列の一致数を取得します。したがって

sum(sapply(strings, function(s) length(grep(s, stuff)))) 

は、それらの合計を示します。

これはあなたが望むものですか?

+0

ありがとう、みんな。あなたのご意見は私がそれを把握するのに役立ちました。 私のデータセットでテーブル関数を使用したとき、結果に値とともに記述的な文字列が含まれているということは非常に混乱していました。たとえば、値6だけではなく、「Some string I Wate 6」です。二重大括弧表記はテーブルから値を引き出します。 – TPL

+1

@TPLあなたが解決策を見つけた場合は、それを回答として投稿して、同じ問題を抱える他の人を助けることができます。 – Barker

関連する問題