2016-12-25 13 views
0
私はdata.frame、DFを持って

、コラム、「COL2」とは、「酵母」、「ヒト」、「ワーム」などの文字列を持っているdata.frameの特定の行の複数の値を置き換える方法は?

df=data.frame(col1=1:5, col2=c("human","worm","worm","yeast","human")) 

と私は、「SCE」でこれらを交換したいです、 "hsa"、 "cel"これどうやってするの?

私は

df[,idx]=lapply(df[,idx],function(x){ gsub(oldname,newname,x) }) 

を行うことができますが、この解決策は、一度に1つの作品が、私はそう

df[,idx]=lapply(df[,idx],function(x){ gsub(c(oldname1,oldname2), c(newname1,newname2),x) }) 

おかげのような変換テーブルのように、一度にすべてを行うことを求めている

+0

はサンプルデータを含めてください使用することができます –

+0

これは助けになるかもしれません。http://stackoverflow.com/questions/ 7547597/dictionary-style-replace-multiple-items – Stedy

+0

@Stedyありがとうございました。それはまさに私が探していたものでした: –

答えて

1

要因を使用してみてください。

df=data.frame(col1=1:5, col2=c("human","worm","worm","yeast","human")) 
    > df 
     col1 col2 
    1 1 human 
    2 2 worm 
    3 3 worm 
    4 4 yeast 
    5 5 human 

    > df$col2 = as.character(factor(x = df$col2, levels = c('yeast', 'human', 'worm'), labels = c('sce', 'hsa', 'cel'))) 
    > df 
     col1 col2 
    1 1 hsa 
    2 2 cel 
    3 3 cel 
    4 4 sce 
    5 5 hsa 
3
df=data.frame(col1=1:5, col2=c("human","worm","worm","yeast","human")) 
a=c(yeast="sce",human="hsa",worm="cel") 
df$col2 = a[df$col2] 

結果:

> df 
    col1 col2 
1 1 sce 
2 2 hsa 
3 3 hsa 
4 4 cel 
5 5 sce 
1

我々はmatch

library(dplyr) 
df %>% 
    mutate(col2 = a[match(col2, names(a))]) 
関連する問題