2017-12-28 21 views
0

次のベクトルを使用して新しいデータテーブルを作成したいと思います。私は2つのテーブル、100人のリスト、5つのテストのリストを持っています。私はテーブルを結合したい、しかし、私はそれぞれの主題ごとに各テストの行をしたいので、新しいテーブルで私は500行を持っています。私は以下の簡単な例を使用しました。これはRである2つのカテゴリのベクトルからデータテーブルを作成するR

person <- data.frame(c("a", "b", "c", "d")) 
test <- data.frame(c("1", "2", "3", "4", "5")) 

私は以下

person test 
a   1 
a   2 
a   3 
a   4 
a   5 
b   1 
b   2 
b   3 
b   4 
b   5 

のようにここから新しいテーブルを作りたい...など

私が最初に参加しようとしたが、一致する変数がありませんまた、運がないまま貼り付けを試みました。私はこれがシンプルに聞こえるので、何かが欠けていると感じます。どんな助けもありがとう!

答えて

1

ここに行きます。これは、人とテストの間のすべての可能なペアリングを与えることdata.table()

expand.grid(person = c("a", "b", "c", "d"), 
      test = c("1", "2", "3", "4", "5"))%>% 
data.table() 

ようにするに

expand.grid(person = c("a", "b", "c", "d"), 
       test = c("1", "2", "3", "4", "5")) 

また、これはおそらく一部の投稿と重複しています。

+0

ご回答のおかげで、私は、エラー、警告メッセージになっています:format.data.frameで (X、桁=数字、na.encode = FALSE): 破損したデータフレーム:列は切り捨てられますが > –

+0

あなたのdata.frameを 'data.table()'に強制することができるはずです。私はなぜその警告が起こっているのかわかりません – InfiniteFlashChess

1

パッケージのCJも使用できます。出力はdata.tableです。

library(data.table) 

CJ(person[, 1], test[, 1]) 
#  V1 V2 
# 1: a 1 
# 2: a 2 
# 3: a 3 
# 4: a 4 
# 5: a 5 
# 6: b 1 
# 7: b 2 
# 8: b 3 
# 9: b 4 
# 10: b 5 
# 11: c 1 
# 12: c 2 
# 13: c 3 
# 14: c 4 
# 15: c 5 
# 16: d 1 
# 17: d 2 
# 18: d 3 
# 19: d 4 
# 20: d 5 
+0

あなたの応答に感謝します。エラーが発生しました FUN(X [[i]]、...)のエラー: 無効な列です:次元があります。フォーマットできません。 data.table(table())の結果であれば、代わりにas.data.table(table())を使用してください。列が特定のタイプである必要がありますか?私のテストは私が考えると思いますが、私の人のコラムはどんなフォーマットでなければなりませんか? –

+0

あなたのサンプルデータフレーム 'person'と' test'でコードが動作することを確認してください。それが動作する場合は、実際のデータフレームがあなたが提供した 'person'と' test'データフレームに似ていることを確認してください。 – www

関連する問題