我有一个数据集,其中多个评分员对多个受试者进行评分。
我想重新排列数据,如下所示:
data <- data.frame(rater=c("A", "B", "C", "A", "B", "C"),
subject=c(1, 1, 1, 2, 2, 2),
measurment1=c(1, 2, 3, 4, 5,6),
measurment2=c(11, 22, 33, 44, 55,66),
measurment3=c(111, 222, 333, 444, 555, 666))
data
# rater subject measurment1 measurment2 measurment3
# 1 A 1 1 11 111
# 2 B 1 2 22 222
# 3 C 1 3 33 333
# 4 A 2 4 44 444
# 5 B 2 5 55 555
# 6 C 2 6 66 666
转换成这样的数据
data_transformed <- data.frame( A = c(1,11,111,4,44,444),
B = c(2,22,222,5,55,555),
C = c(3,33,333,6,66,666)
)
row.names(data_transformed) <- c("measurment1_1", "measurment2_1", "measurment3_1", "measurment1_2", "measurment2_2", "measurment3_2")
data_transformed
# A B C
# measurment1_1 1 2 3
# measurment2_1 11 22 33
# measurment3_1 111 222 333
# measurment1_2 4 5 6
# measurment2_2 44 55 66
# measurment3_2 444 555 666
在新的数据框架中,评分者(A、B和C)应该成为列。测量应该成为行,我还想添加受试者编号作为行名称的后缀。
对于重新排列,人们可能会使用枢轴函数,但我不知道如何将测量变量与主题编号结合起来。
谢谢你的帮忙!
2条答案
按热度按时间h7appiyu1#
我们可以使用
tidyr
包中的pivot_longer
、pivot_wider
和unite
。pivot_longer
使我们的数据为垂直格式,它将测量列转换为单个变量pivot_wider
执行与pivot_longger相反的操作,将变量中的每个唯一值转换为多列k2fxgqgv2#
请尝试下面的代码,我们可以使用
pivot_longer
,pivot_wider
和column_to_rownames
完成预期的结果。