0

複数の質問でそれぞれ 2 人の評価者が学生を評価するデータがあります。各行には次の変数が含まれます。

  • 学生証、
  • 最初の項目の最初の評価者の ID
  • 最初のアイテムの最初の評価者によって割り当てられた評価、
  • 最初の項目の 2 番目の評価者の ID
  • 2 番目の評価者が最初のアイテムに割り当てた評価

....そして、複数のアイテムに対して繰り返されます。

次のようになります。

Student_ID  <- c(1:4)
Item1_first_rater_id <- c(1,2,1,2)
Item1_first_rating <- c(2,3,4,2)
Item1_second_rater_id <- c(2,3,2,3)
Item1_second_rating <- c(4,5,3,2)
Item2_first_rater_id <- c(4,2,5,1)
Item2_first_rating <- c(2,3,4,2)
Item2_second_rater_id <- c(6,7,2,3)
Item2_second_rating <- c(3,4,5,4)

wide <- data.frame(Student_ID, Item1_first_rater_id, Item1_first_rating, 
                          Item1_second_rater_id, Item1_second_rating, 
                          Item2_first_rater_id, Item2_first_rating, 
                          Item2_second_rater_id, Item2_second_rating)

次のような長い形式のデータが必要です。

Student_ID  <- c(1:4)
Item_number <- c(1,1,2,2)
Rater_id <- c(1:4)
Score <- c(2,3,4,5)
long <- data.frame(Student_ID, Item_number, Rater_id, Score)

形を変える方法についてのアイデアはありますか?

ありがとう。

4

1 に答える 1

1

何をしようとしているのか (つまり、ソース データをどのように正確に変換したいのか) が完全に明確ではありません。これは、少なくとも目的の出力に近づける可能性のある推測の 1 つです。

names「ワイド」データセットには、(1)アイテム番号、(2)「時間」(最初または2番目)、および(3)別の変数(「評価」または「評価者」の3つの情報セットが含まれているようですid")。

meltcolsplit、およびを使用して、dcast再形成を容易にすることができます。

ステップ 1:meltデータセット

library(reshape2)
orignames <- names(wide) # Store the original names so we can replace them
names(wide) <- gsub("Item([0-9])_(.*)_(rater_id|rating)", 
                    "\\1\\.\\2\\.\\3", names(wide))
# "melt" the dataset
m.wide <- melt(wide, id.vars="Student_ID")
head(m.wide)
#   Student_ID         variable value
# 1          1 1.first.rater_id     1
# 2          2 1.first.rater_id     2
# 3          3 1.first.rater_id     1
# 4          4 1.first.rater_id     2
# 5          1   1.first.rating     2
# 6          2   1.first.rating     3

ステップ 2: を使用して新しい列を作成します。colsplit

m.wide <- cbind(m.wide, 
                colsplit(m.wide$variable, "\\.", 
                         c("Item", "Time", "Var")))
head(m.wide)
#   Student_ID         variable value Item  Time      Var
# 1          1 1.first.rater_id     1    1 first rater_id
# 2          2 1.first.rater_id     2    1 first rater_id
# 3          3 1.first.rater_id     1    1 first rater_id
# 4          4 1.first.rater_id     2    1 first rater_id
# 5          1   1.first.rating     2    1 first   rating
# 6          2   1.first.rating     3    1 first   rating

ステップ 3: を使用dcastしてデータを再形成する

dcast(m.wide, Student_ID + Item ~ Time + Var, value.var="value")
#   Student_ID Item first_rater_id first_rating second_rater_id second_rating
# 1          1    1              1            2               2             4
# 2          1    2              4            2               6             3
# 3          2    1              2            3               3             5
# 4          2    2              2            3               7             4
# 5          3    1              1            4               2             3
# 6          3    2              5            4               2             5
# 7          4    1              2            2               3             2
# 8          4    2              1            2               3             4

の左側にあるものと右側にあるものを切り替えると~、データの「形状」に影響します。

于 2013-06-11T09:28:21.480 に答える