【问题标题】:Restructuring data (for IRR-analysis)重组数据(用于内部收益率分析)
【发布时间】:2018-11-08 04:18:53
【问题描述】:

我有以下数据框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 vs. 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

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

【问题讨论】:

    标签: r reshape tidyverse irr


    【解决方案1】:

    您可以使用dplyrgroup_bymutate)和tidyrgatherspreadunite)的函数转换数据:

    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

    new_df %>% 
      filter_all(all_vars(!is.na(.)))
    
    # A tibble: 5 x 5
    # Groups:   id [5]
    #      id coder_1_var1 coder_1_var2 coder_2_var1 coder_2_var2
    #   <dbl> <chr>        <chr>        <chr>        <chr>       
    # 1     2 A            1            A            1           
    # 2     3 B            5            A            6           
    # 3     4 C            2            C            3           
    # 4     5 A            1            A            1           
    # 5     6 E            3            E            3         
    

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      相关资源
      最近更新 更多