2013-07-25 61 views
2

說我有一個數據幀,看起來像這樣:如何將一列因子分成多個因子的多列?

Factor  Value 
======  ===== 
1A.In  1.0 
1A.Out  2.6 
1B.In  0.5 
1B.Out  3.4 
2A.In  5.5 

我的目標是將列添加到數據幀提取單因素列信息,因爲這樣的:

Factor Value Fact1  Fact2  Fact3 
====== ===== =====  =====  ===== 
1A.In 1.0  1   A   In 
1A.Out 2.6  1   A   Out 
1B.In 0.5  1   B   In 
1B.Out 3.4  1   B   Out 
2A.In 5.5  2   A   In 

我只是不知道如何做到這一點,而不使用子集ad nauseum。我對R相對來說比較陌生,並且沒有編程背景,所以任何建議都會很感激。

回答

7

參見?substr

within(df, { 
    Fact1 <- substr(Factor, 1, 1) 
    Fact2 <- substr(Factor, 2, 2) 
    Fact3 <- substr(Factor, 4, 999) 
}) 

我在這裏假設每個新變量有多少個字符。爲了更一般化,您應該在Factor中使用某種常規結構,例如將點作爲所有變量的分隔符。

+0

不錯的使用substr,+1 – nico

+0

非常優雅,工作得很好。謝謝。 – AndMan21

+3

我寧願以編程方式做最後一個:'substr(因子,4,max(nchar(因子))',但這很漂亮。 –