R 重新格式化数据帧

R 重新格式化数据帧,r,reshape2,R,Reshape2,在R中,我尝试在如下数据框中获取面试分数: Interviewer Applicant Score Int_9 App_5 3 Int_3 App_3 2 Int_1 App_2 9 Int_3 App_5 2 ... 并将其重新格式化为: AVG Int_1 Int_2 Int_3 ... App_3 2.0 NA NA

在R中,我尝试在如下数据框中获取面试分数:

Interviewer  Applicant  Score
Int_9        App_5      3
Int_3        App_3      2
Int_1        App_2      9
Int_3        App_5      2
...
并将其重新格式化为:

            AVG    Int_1   Int_2   Int_3   ...
App_3       2.0    NA      NA      2                  
App_5       2.5    NA      NA      2
App_2       9.0    9       NA      NA
...
这让我很接近:

然而,面试官的名字并不像我想的那样按字母顺序排列。我想我可以使用
mean
merge
函数来获取平均值列,但我不知道如何将平均值从低到高排序(并让其余条目随车而来)。此外,我如何在不明确填写每位申请人姓名的情况下平均所有申请人的分数,即,如何不必这样做:

app_avg = c(mean(data$score[data$applicant=="App_1"]), mean(data$score[data$applicant=="App_2"]), mean(data$score[data$applicant=="App_3"]), ...)
请帮忙?

这里有一个解决方案

library(reshape)
library(tibble)
将数据从“长”格式重铸为“宽”格式:


>df1 df_avg df2 df3 rownames(df3)
tapply(dat[,3],dat[2:1],I)?
@akrun-whoops-我的意思是这一个非常接近于一个重复的---(该死的剪贴板!)
library(reshape)
library(tibble)
> df1 <- cast(df0, formula = Applicant ~ Interviewer, value = "Score", add.missing = TRUE, fill = NA, fun.aggregate = sum)

  Applicant  Int_1   Int_2   Int_3   ...
1     App_5     NA      NA       2                  
2     App_3     NA      NA       2
3     App_2      9      NA      NA
...
> df_avg <- data.frame(Applicant = df1[,1], AVG = rowMeans(df1[,-1], na.rm=TRUE))

  Applicant    AVG
1     App_3    2.5
2     App_5    2.0
3     App_2    9.0
> df2 <- add_column(df1, AVG=df_avg[,2], .before = "Int_1")

  Applicant  AVG  Int_1   Int_2   Int_3   ...
1     App_5  2.5     NA      NA       2                  
2     App_3  2.0     NA      NA       2
3     App_2  9.0      9      NA      NA
...
> df3 <- df2[order(df2$AVG),]

  Applicant  AVG  Int_1   Int_2   Int_3   ...
2     App_3  2.0     NA      NA       2                  
1     App_5  2.5     NA      NA       2
3     App_2  9.0      9      NA      NA
...
> rownames(df3) <- NULL

  Applicant  AVG  Int_1   Int_2   Int_3   ...
1     App_3  2.0     NA      NA       2                  
2     App_5  2.5     NA      NA       2
3     App_2  9.0      9      NA      NA
...