我正在尝试pivot_wider()
一个包含不同人名的数据框的列X。在group_by()
df的另一个变量Y中,总是有2个这样的名字。我希望R在Y的每个唯一标识符中取2个唯一的X名称值,并将它们放在2个新列ex_X_Name_1和ex_X_Name_2中。
我的数据框如下所示:
df <- data.frame(Student = rep(c(17383, 16487, 17646, 2648, 3785), each = 2),
Referee = c("Paul Severe", "Cathy Nice", "Jean Exigeant", "Hilda Ehrlich", "John Rates",
"Eva Luates", "Fred Notebien", "Aldous Grading", "Hans Streng", "Anna Filaktic"),
Rating = format(round(x = sqrt(sample(15:95, 10, replace = TRUE)), digits = 3), nsmall = 3)
)
df
我想将Referee列转换为2个新列Referee_1和Referee_2,为每个学生分配2个唯一的Referee,并以以下结果结束:
even_row_df <- as.logical(seq_len(length(df$Referee)) %% 2)
df_wanted <- data_frame(
Student = unique(df$Student),
Referee_1 = df$Referee[even_row_df],
Rating_Ref_1 = df$Rating[even_row_df],
Referee_2 = df$Referee[!even_row_df],
Rating_Ref_2 = df$Rating[!even_row_df]
)
df_wanted
我想我可以通过为学生/裁判组合的唯一行设置子集并进行连接来实现这一点,但是有没有一种方法可以在一次调用pivot_wideer中处理这一点呢?
2条答案
按热度按时间jfgube3f1#
您应该首先为每个组创建一个行ID:
5sxhfpxr2#
使用数据.表