2016-10-17 16 views
0

私はRを使用します。私の答えがあまりにも "ばかげた"とは思われないことを願っていますが、実際に私が行ったエラーを理解することはできません。2つの変数の数値コードをrの2つのdfで異なるように変更

私は2002年から2014年までの全国調査を行い、毎年、インタビューを受けた人物が働く会社の次元(労働者数)を尋ねられます。 数値コード(1,2、..)が各クラスディメンションに関連付けられています。 2008年7〜2014年のクラスからのに対し、2006年から2002年から、私は次元の6クラスを、持っている:

2002-2006       2008-2014 
    0-4 workers ->  1    0-4 workers ->  1 
    5-19 workers -> 2    5-15 workers ->  2 
    20-49 workers -> 3    16-19 workers -> 3 
    50-99 workers -> 4    20-49 workers -> 4 
    100-499 workers -> 5    50-99 workers -> 5 
    >500 workers -> 6    100-499 workers -> 6 
             >500 workers ->  7 

まず、私はコード2年2008-14におけるクラス3(16-19労働者)のコードを変更し、

d.d <- data.frame(id=c(1,2,3,4,5,6), yr=c("2002", "2004", "2006", "2008", "2010", "2014"), dim=c(1,2,3,3,4,7)) 

For example: 

id yr dim 
1 2002 1 
2 2004 2 
3 2006 3 
4 2008 3 
5 2010 4 
6 2014 7 

所望の出力である:2002-06におけるコードの同じクラスの寸法(5-20​​労働者)を有するために

id yr dim 
1 2002 1 
2 2004 2 
3 2006 3 
4 2008 2 
5 2010 3 
6 2014 6 

コマンドを1

d.d$dim2 <- ifelse(d.d$dim=="3" & d.d$yr=="2008",2, 
        ifelse(d.d$dim=="3" & d.d$yr=="2010",2, 
          ifelse(d.d$dim=="3" & d.d$yr=="2012",2, 
            ifelse(d.d$dim=="3" & d.d$yr=="2014",2, 
             d.d$dim)))) 

dimは会社の次元であり、yrは年です。このようにして、2008年から2014年にかけてクラス3からクラス2に正しく変更されました。

コードは同じクラスディメンション(2002-06コード3(20-49人の労働者)、2008-14コード4 Iは、第2のコードの変更コードは、コマンド1を使用して、コマンドによって1つの

結果を変更したことに気づい

COMMAND 2

d.d$dim2 <- ifelse(d.d$dim=="4" & d.d$yr=="2008",3, 
         ifelse(d.d$dim=="4" & d.d$yr=="2010",3, 
           ifelse(d.d$dim=="4" & d.d$yr=="2012",3, 
             ifelse(d.d$dim=="4" & d.d$yr=="2014",3, 
              d.d$dim)))) 

:20-24労働者))私は前のようにコードをallignしようとしました

d.d 

     id yr dim dim2 
    1 1 2002 1 1 
    2 2 2004 2 2 
    3 3 2006 3 3 
    **4 4 2008 3 2** 
    5 5 2010 4 4 
    6 6 2014 7 7 

RESULT

d.d 

    id  yr dim dim2 
    1 1 2002 1 1 
    2 2 2004 2 2 
    3 3 2006 3 3 
**4 4 2008 3 3** 
    5 5 2010 4 3 
    6 6 2014 7 7 

(COMMAND 1後)COMMAND 2を適用した後、私はエラーを理解することはできません。

+2

を使用している場合、彼らはすべてがまったく同じことをやっている場合は、なぜあなたは4 'ifelse'を埋め込むでしょうか?なぜ、 '' d.d $$ == 4&d.d $ yr '%in%' c(2008年、2010年、2012年、2014年)、 "dim2"] < - 3'''ですか?また、数値が文字として指定されているのはなぜですか?たとえば、「4」の代わりに「4」を使用するのはなぜですか?また、[Rの再現可能な例]を作る方法を見てください(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –

答えて

1

はこれを試してみてください:

d.d$yr = as.numeric(d.d$yr) 
d.d$dim = as.numeric(d.d$dim) 

d.d$dim[ d.d$dim >= 3 & d.d$yr >= 2008 ] = d.d$dim[ d.d$dim >= 3 & d.d$yr >= 2008 ] - 1 

まず、数値に年薄暗い情報を変更します。これにより、変更するサブセットの条件が簡略化されます。

次に、3つ以上の条件と2008年からの条件を満たすdimとyearのdimから1を減算します。

年かの要因が、その後の数値に変更している薄暗いはas.numeric(as.character(...))

関連する問題