重组数据(用于IRR分析)

时间:2018-05-29 13:24:26

标签: r reshape tidyverse irr

我有以下数据框df(虚构数据),包含多个变量var1var2,...,var_n

var1<-c("A","A","A","B","A","C","C","A", "A", "E", "E", "B")
var2<-c(NA,"1","1","5","6","2","3","1", "1", "3", "3", "2")
id<-c(1,2,2,3,3,4,4,5,5,6,6,7)

df<-data.frame(id, var1, var2)
df

   id var1 var2
   1    A <NA>
   2    A    1
   2    A    1
   3    B    5
   3    A    6
   4    C    2
   4    C    3
   5    A    1
   5    A    1
   6    E    3
   6    E    3
   7    B    2

从文档分析中检索数据,其中多个编码器从物理文件中提取值。每个文件都有一个特定的id。因此,如果有两个条目具有相同的id,则这意味着两个不同的编码器对同一文档进行编码。例如,在文件号中。 4两个程序员都同意var1的值为C,而文件号为。 3有异议(A与B)。

为了计算评估者间的可靠性(irr),我需要按如下方式重构数据帧:

id var1  var1_coder2 var2 var2_coder2
2  A     A           1    5
3  B     A           5    6
4  C     C           2    3
5  C     C           1    1
6  E     E           3    3

有谁能告诉我如何完成这项工作?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用dplyrgroup_bymutate)和tidyrgatherspread,{{ 1}}):

unite

如果您只想保留所有编码器输入值的行,您可以使用library(tidyr) library(dplyr) new_df <- df %>% group_by(id) %>% mutate(coder = paste0("coder_", 1:n())) %>% gather("variables", "values", -id, -coder) %>% unite(column, coder, variables) %>% spread(column, values) new_df # A tibble: 7 x 5 # Groups: id [7] # id coder_1_var1 coder_1_var2 coder_2_var1 coder_2_var2 # <dbl> <chr> <chr> <chr> <chr> # 1 1 A NA NA NA # 2 2 A 1 A 1 # 3 3 B 5 A 6 # 4 4 C 2 C 3 # 5 5 A 1 A 1 # 6 6 E 3 E 3 # 7 7 B 2 NA NA

filter_all