2016-05-06 25 views
0

Rでデータフレームを処理しています。いくつかのセルには「P」と数字が続きます。これらのケースのために私は、「P」を除く数値に文字の残りの部分を回した後、例えば5文字列内の特定の文字を見つけて削除し、残りの文字を数字にして5で割ります。

> Replace<-data.frame(group=c("P4", "25", "4", "P1", "25")) 
    > Replace 
    group 
    1 P4 
    2 25 
    3  4 
    4 P1 
    5 25 
    > 

によってその数および除算を取る、私は思います「置き換え」の中にしたいのですが「P4」のように「0.8」、「P1」は「0.2」となる。しかし、 "25"、 "4"、 "25"は同じままでなければなりません。助けてくれてありがとう!

+0

'as.numeric(gsub(pattern =" P "、replacement =" "、Replace $ group))/ 5))'。それをすべての列に適用します。 – zacdav

+0

括弧は、それぞれを5で区切らないようにする必要がありますか? – RyanStephens

+0

あなたはifelseを使う必要があります。 @ Psidomの答えは最高で、 'dplyr'パッケージを使用しています。私はそれを使用することをお勧めします。 – zacdav

答えて

3
library(dplyr) 
Replace <- mutate(Replace, group = ifelse(grepl("P", group), 
        as.numeric(gsub("P", "", group))/5, as.character(group))) 
+0

これは完璧で、美しく動作します。私はちょうどその時、すべての列を一気に丁寧に使って崩壊させることができると思う。再度、感謝します! – RyanStephens

+0

'mutate_each()'関数を使うことができます。 'mutate_each(replace、funs ifelse(grepl(" P "、。)、as.numeric(gsub(" P "、" "、。))/ 5、as.character(。))))' – Psidom

関連する問題