2017-07-21 1 views
0

行ごとにセル内の文字のインスタンスの数を数える方法を教えてもらえますか?私は並べ替える1000万snpsのファイルを持っています。Rの列カウントGWASのためにそれを使用し始めたと私は迷っています

Direction 
?????+-+- 
?+-+-???? 
?-+-+??-+ 

上記は、私が持っている多くの列の1つの例です。私がしたいことは、「?」の数を数えることです。文字を各行に個別に追加し、その数を数値として新しい列を追加します。

私はこれで深いところに投げ込まれたトータルの初心者です。どんな助けもありがとうございます。

ありがとうございました。あなたのための

+0

本当にこのような形式ですか? SNPは通常0、1、2、またはNAsです。 –

+0

[Rで素晴らしい再生可能サンプルを作成するにはどうすればいいですか?](https://stackoverflow.com/questions/5963269/how-to-make-a-great- (例:r-reproducible-example) – Masoud

+0

'nchar(gsub(" [^ \\?] "、" "、Direction))' – juan

答えて

0

2つの答え

a <- data.frame(direction = c("?????+-+-", "?+-+-????","?-+-+??-+"), 
stringAsFactors = F) 
a$return <- lengths(regmatches(a$direction, gregexpr("\\?", a$direction))) 

やコメントどおり

a$return <- nchar(gsub("[^?]", "", a$direction)) 

の両方が

'data.frame': 3 obs. of 2 variables: 
$ direction: chr "?????+-+-" "?+-+-????" "?-+-+??-+" 
$ return : int 5 5 3 

を返すこれを行う方法のトンがあり、あなたが探しているものに依存しますために。

更新

それは基地Rではないかもしれないが、tidyverse内のパッケージは、データが論争のために有用であり、容易に数コール一緒に文字列に使用することができます。

install.packages("dplyr") 
library(dplyr) 
df <- data.frame(Direction = c("???????????-?", "???????????+?", "???????????+?", "???????????-?"), stringsAsFactors = F) 
df %>% 
    mutate(qmark = nchar(gsub("[^?]", "", Direction)), 
     pos = nchar(gsub("[^+]", "", Direction)), 
     neg = nchar(gsub("[^-]", "", Direction)), 
     qminus = qmark-(pos+neg), 
     total = nchar(Direction)) 


     Direction qmark pos neg qminus total 
1 ???????????-? 12 0 1  11 13 
2 ???????????+? 12 1 0  11 13 
3 ???????????+? 12 1 0  11 13 
4 ???????????-? 12 0 1  11 13 

データセットは、しかし千万ラインの長さであるならば、あなたはいくつかのベンチマークtestingに基づいてstringiを使用する場合があります。

install.packages("stringi") 
library(stringi) 
df %>% 
    mutate(qmark = stri_count(Direction, fixed = "?"), 
     pos = stri_count(Direction, fixed = "+"), 
     neg = stri_count(Direction, fixed = "-"), 
     qminus = qmark-(pos+neg)) 
+0

私は適切な質問をしていないか、適切に書式を設定するのにRについて十分に知りませんが、提案の中ではうまくいきません。私が望むことをやっていない、あるいはあなたが言うことをやってもいません。 ご協力いただきありがとうございます。 –

+0

コメントで述べたように、[再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を提供できれば、 *あなたのデータ。私は解を提供するために 'data.frame'を作ったが、あなたのデータは異なる構造を持つかもしれないので、Rはそれを別々に扱います。 –

+0

大丈夫 "top $ DirectionCount = nchar(gsub(" [^ \\?] "、" "、トップ$ Direction))" 今私は "?私のテーブルの新しい欄に!素晴らしいもの。 –

関連する問題