2016-05-25 17 views
0

私はRが初めてで、最初の列に複数の重複データフレームがありますが、2番目の列には一意の値があります。複数の重複行を列に変換するR

最初の列に一意の値を保持し、一意の値ごとに異なる列を作成したいとします。

私の現在のデータフレームは、このようなものになります。

Item Value 
Apricot 4 
Apricot 2 
Apricot 5 
Banana 4 
Carrot 7 
Carrot 5 

をし、私はそれが次のようになりたい:事前に

Item Value 1  Value 2  Value 3 
Apricot  4   2   5 
Banana  4  
Carrot  7   5 

感謝。 Fojjit

答えて

1

を使用することができます。便利な関数rowidは、変数に基づいてシーケンスを得ることができます。これをdcast式で使用すると、「ワイド」出力が得られます。

library(data.table) 
dcast(setDT(df1), Item~rowid(Item, prefix="Value"), value.var="Value") 
#  Item Value1 Value2 Value3 
#1: Apricot  4  2  5 
#2: Banana  4  NA  NA 
#3: Carrot  7  5  NA 
+0

私は関数rowidを使用するのに苦労しています、あなたは助けることができますか?ありがとう – Fojjit

+0

@Fojjit。 'rowid'関数は、CRAN上でダウンロード可能なバージョンである' data.table' 1.9.6では利用できません。 'rowid'を使うには、解答のリンクに概説されているように、開発バージョン1.9.7をダウンロードする必要があります。 – lmo

1

値の順序に余分な列が必要です。それらあなたは(あなたがすなわち1.9.7develバージョンを使用している場合は、インストールの詳細hereを)これは簡単にdata.tableで行うことができるspread

library(dplyr) 
library(tidyr) 
your.data %>% 
    group_by(Item) %>% 
    mutate(Order = seq_along(Item)) %>% 
    spread(key = Order, value = Value) 
+0

バリューオーダーの列を追加するとはどういう意味ですか?ありがとう – Fojjit

関連する問題