Как создать набор данных в определенной структуре? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть набор учеников c("John","Jeff","Jim","Jack","Joe","Jones"), и каждый из них посещал 3 различных класса c("Math","Science","History") и набрал натуральное число в баллах от 0 до 100.

Следовательно, таблица должнабыть как

Name Class   Score
Jim  Math     25
Jim  History  60
Jim  Science  80
Jeff Math     85
Jeff History  40
Jeff Science  100
...
...
...

То, что я пробовал, это:

dt<-data.frame(
  Names=rep(c("John","Jeff","Jim","Jack","Joe","Jones"),3 ),
  Class=rep(c("Math","Science","History"),6  ),
  Grades=sample(1:100,18  ))

dt[sort(dt$Names),]

Мой код дает мне:

   Names   Class Grades
4   Jack    Math     73
10  Jack    Math     87
16  Jack    Math     81
2   Jeff Science     24
8   Jeff Science     79

так, вместо Math, History и Science, у меня есть Math, Math и Math.

Но это не дает мне то, что мне нужно.Как я могу это исправить?

1 Ответ

0 голосов
/ 24 сентября 2018

попробуйте использовать each в rep .... Рекомендуется явно указывать each / times / length-out в rep, чтобы избежать непредвиденного поведения.

data.frame(
  Names=rep( c("John","Jeff","Jim","Jack","Joe","Jones"), each = 3 ),
  Class=rep(c("Math","Science","History"), times = 6  ),
  Grades=sample( 1:100,18  ) )

# Names   Class Grades
# 1   John    Math     57
# 2   John Science     23
# 3   John History     82
# 4   Jeff    Math      3
# 5   Jeff Science     65
# 6   Jeff History     37
# 7    Jim    Math     95
# 8    Jim Science     39
# 9    Jim History     16
# 10  Jack    Math     18
# 11  Jack Science     63
# 12  Jack History     53
# 13   Joe    Math     90
# 14   Joe Science     11
# 15   Joe History     77
# 16 Jones    Math     29
# 17 Jones Science     15
# 18 Jones History     19
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...