繁体   English   中英

如何从 R 中的数据框中创建多个主题的相似性判断三角形?

[英]How can I create a triangle of similarity judgements by multiple subjects from a data frame in R?

我有一个 dataframe 包含一些受试者做出的相似性判断,判断两个文件的相似程度。 这是df:

>dput(df)
    structure(list(subject = c(5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 5598758, 
5598758, 5598758, 5598758, 5598758, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 5598778, 
5598778, 5598778, 5598778, 5598778, 5598778, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 5598928, 
5598928, 5598928, 5598928, 5598928, 5598928, 5598928), Voice1 = c("S01", 
"S08", "S012", "S03", "S03", "S010", "S09", "S07", "S02", "S010", 
"S03", "S01", "S05", "S012", "S08", "S011", "S07", "S05", "S06", 
"S08", "S012", "S07", "S010", "S07", "S04", "S010", "S03", "S02", 
"S010", "S012", "S05", "S08", "S06", "S03", "S09", "S05", "S03", 
"S07", "S07", "S011", "S05", "S01", "S02", "S08", "S010", "S08", 
"S011", "S010", "S08", "S04", "S02", "S06", "S04", "S09", "S02", 
"S011", "S02", "S09", "S012", "S01", "S03", "S02", "S010", "S09", 
"S09", "S011", "S05", "S012", "S06", "S01", "S08", "S08", "S04", 
"S07", "S010", "S07", "S09", "S05", "S012", "S05", "S04", "S05", 
"S06", "S012", "S011", "S09", "S08", "S08", "S07", "S02", "S07", 
"S09", "S07", "S04", "S03", "S06", "S08", "S08", "S05", "S06", 
"S011", "S010", "S01", "S08", "S010", "S07", "S010", "S012", 
"S07", "S03", "S011", "S02", "S08", "S08", "S09", "S010", "S02", 
"S07", "S012", "S03", "S010", "S02", "S05", "S01", "S02", "S09", 
"S09", "S01", "S010", "S09", "S08", "S05", "S07", "S03", "S010", 
"S011", "S05", "S010", "S01", "S01", "S03", "S012", "S03", "S010", 
"S08", "S06", "S04", "S02", "S04", "S05", "S011", "S02", "S012", 
"S07", "S09", "S03", "S03", "S012", "S05", "S09", "S011", "S02", 
"S01", "S010", "S07", "S08", "S03", "S04", "S03", "S02", "S09", 
"S04", "S05", "S010", "S010", "S08", "S08", "S01", "S012", "S09", 
"S012", "S01", "S08", "S08", "S05", "S07", "S07", "S010", "S09", 
"S06", "S011", "S09", "S010", "S07", "S01", "S04", "S06", "S05", 
"S02", "S010", "S01", "S011", "S07", "S010", "S08", "S03", "S05", 
"S06", "S08", "S04", "S08", "S09", "S02", "S02", "S010", "S012", 
"S012", "S07", "S02", "S03", "S07", "S05", "S07", "S06", "S08", 
"S09", "S012", "S03", "S02", "S011", "S03", "S010", "S011", "S05"
), Voice2 = c("S02", "S04", "S012", "S05", "S011", "S010", "S01", 
"S011", "S09", "S06", "S01", "S012", "S011", "S07", "S012", "S01", 
"S01", "S012", "S012", "S06", "S011", "S010", "S012", "S03", 
"S03", "S09", "S03", "S06", "S01", "S03", "S08", "S011", "S07", 
"S02", "S06", "S06", "S06", "S07", "S04", "S011", "S09", "S04", 
"S02", "S02", "S011", "S03", "S09", "S08", "S08", "S06", "S011", 
"S06", "S04", "S07", "S07", "S04", "S05", "S03", "S04", "S05", 
"S010", "S04", "S05", "S04", "S012", "S06", "S04", "S02", "S01", 
"S01", "S01", "S09", "S010", "S08", "S02", "S05", "S09", "S05", 
"S07", "S011", "S06", "S08", "S06", "S011", "S011", "S01", "S03", 
"S012", "S07", "S02", "S08", "S04", "S04", "S03", "S01", "S01", 
"S011", "S04", "S05", "S07", "S06", "S01", "S01", "S01", "S09", 
"S011", "S011", "S012", "S01", "S03", "S09", "S09", "S08", "S09", 
"S012", "S012", "S07", "S010", "S02", "S05", "S06", "S05", "S04", 
"S04", "S04", "S07", "S09", "S02", "S010", "S03", "S06", "S09", 
"S03", "S010", "S05", "S04", "S012", "S08", "S012", "S05", "S06", 
"S04", "S011", "S02", "S02", "S012", "S04", "S011", "S010", "S06", 
"S01", "S06", "S03", "S05", "S06", "S02", "S03", "S04", "S08", 
"S04", "S01", "S011", "S012", "S02", "S01", "S04", "S01", "S04", 
"S06", "S05", "S012", "S03", "S011", "S012", "S06", "S012", "S09", 
"S01", "S02", "S06", "S012", "S04", "S011", "S08", "S04", "S08", 
"S05", "S08", "S09", "S06", "S09", "S03", "S011", "S07", "S02", 
"S010", "S012", "S09", "S04", "S010", "S05", "S011", "S03", "S09", 
"S06", "S010", "S05", "S01", "S02", "S06", "S01", "S07", "S09", 
"S06", "S01", "S03", "S011", "S010", "S02", "S02", "S04", "S012", 
"S011", "S07", "S03", "S01", "S07", "S05", "S07", "S06", "S011", 
"S05", "S04", "S06"), response = c(3, 1, 9, 3, 3, 7, 5, 2, 6, 
7, 7, 6, 5, 4, 2, 8, 3, 2, 3, 4, 4, 3, 2, 3, 1, 4, 9, 4, 4, 4, 
1, 3, 2, 6, 8, 7, 1, 8, 1, 8, 7, 9, 1, 8, 7, 3, 5, 5, 1, 9, 8, 
5, 2, 5, 6, 9, 9, 6, 9, 6, 2, 8, 6, 8, 7, 6, 9, 9, 1, 3, 7, 6, 
8, 9, 5, 8, 1, 1, 9, 2, 9, 9, 1, 6, 1, 5, 3, 9, 1, 1, 7, 9, 8, 
9, 6, 1, 8, 9, 1, 5, 6, 8, 1, 4, 4, 9, 3, 1, 9, 1, 3, 7, 1, 9, 
9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 7, 1, 7, 1, 9, 3, 9, 9, 3, 9, 
9, 9, 9, 4, 9, 3, 5, 3, 3, 7, 9, 1, 8, 4, 7, 9, 3, 8, 9, 9, 6, 
1, 6, 7, 6, 7, 7, 3, 8, 5, 8, 7, 1, 6, 9, 2, 8, 7, 8, 3, 6, 4, 
1, 7, 2, 1, 9, 3, 1, 9, 8, 9, 7, 1, 1, 4, 6, 2, 1, 8, 9, 9, 9, 
6, 1, 8, 1, 6, 4, 3, 1, 1, 3, 5, 9, 9, 5, 7, 6, 4, 7, 3, 6, 1, 
5, 3, 5, 7, 3, 1, 2, 4, 8, 8, 7, 5, 9, 9, 7), Spreadsheet = c("Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1", "Order1", "Order1", "Order1", "Order1", "Order1", 
"Order1", "Order1")), row.names = c(NA, -234L), class = c("tbl_df", 
"tbl", "data.frame"))

我想创建以下排序的相似矩阵三角形(来自不同的数据集):

# A tibble: 12 x 13
   subject   Voice      S01   S02   S03   S04   S05   S06   S07   S08   S09  S010  S011  S012
     <dbl>    <chr>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 5456381     S01       1    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
 2 5456381     S02       8     1    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
 3 5456381     S03       8     2     1    NA    NA    NA    NA    NA    NA    NA    NA    NA
 4 5456381     S04       7     9     7     1    NA    NA    NA    NA    NA    NA    NA    NA
 5 5456381     S05       8     9     9     7     1    NA    NA    NA    NA    NA    NA    NA
 6 5456381     S06       3     7     3     8     6     1    NA    NA    NA    NA    NA    NA
 7 5456381     S07       7     9     8     7     8     7     1    NA    NA    NA    NA    NA
 8 5456381     S08       7     4     2     9     9     3     9     1    NA    NA    NA    NA
 9 5456381     S09       1     4     9     8     8     2     4     4     1    NA    NA    NA
10 5456381     S010      6     5     2     8     8     6     4     2     5     1    NA    NA
11 5456381     S011      4     6     3     6     7     6     6     3     6     2     2    NA
12 5456381     S012      7     9     8     4     7     4     2     8     7     8     3     1

但我希望按主题在数据框中堆叠几个此类三角形。

我尝试了以下代码:

tri<-order1%>%
  pivot_wider(names_from = Voice2,values_from=response, names_sort=TRUE)

这给了我以下内容:

# A tibble: 192 x 15
   subject Voice1 Spreadsheet   S01  S010  S011  S012   S02   S03   S04   S05   S06   S07   S08   S09
     <dbl> <chr>  <chr>       <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 5598758 S01    Order1          3    NA    NA     6     3    NA     9     6    NA    NA    NA    NA
 2 5598758 S08    Order1          7    NA     3     2     8     3     1    NA     4    NA     1     6
 3 5598758 S012   Order1         NA    NA     4     9     9     4     9    NA    NA     4    NA    NA
 4 5598758 S03    Order1          7     2     3    NA     6     9    NA     3     1    NA    NA    NA
 5 5598758 S010   Order1          4     7     7     2     5    NA    NA     6     7    NA     5     4
 6 5598758 S09    Order1          5    NA    NA     7    NA     6     8    NA     8     5    NA     1
 7 5598758 S07    Order1          3     3     2    NA    NA     3     1     8    NA     8     9    NA
 8 5598758 S02    Order1         NA    NA     8    NA     1    NA     8     9     4     6    NA     6
 9 5598758 S05    Order1         NA    NA     5     2    NA    NA     9     1     7    NA     1     7
10 5598758 S011   Order1          8    NA     8    NA    NA    NA     9    NA     6    NA    NA     5
# ... with 182 more rows

我怎样才能做到这一点,以便我为数据框中堆叠的每个主题都有一个下三角形?

蒂亚!

像这样的东西:

library(tidyverse)
df |>
  mutate(voiceOrd = as.numeric(substring(Voice1, 3, 5))) |>
  arrange(voiceOrd) |>
  pivot_wider(names_from = Voice2, 
              values_from = response, names_sort = TRUE) |>
  relocate(c("S010", "S011", "S012"), .after = "S09") |>
  arrange(subject, voiceOrd) |>
 select(-voiceOrd, -Spreadsheet)
#> # A tibble: 36 × 14
#>    subject Voice1   S01   S02   S03   S04   S05   S06   S07   S08   S09  S010
#>      <dbl> <chr>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 5598758 S01        3     3    NA     9     6    NA    NA    NA    NA    NA
#>  2 5598758 S02       NA     1    NA     8     9     4     6    NA     6    NA
#>  3 5598758 S03        7     6     9    NA     3     1    NA    NA    NA     2
#>  4 5598758 S04       NA    NA     1     2    NA     9    NA    NA    NA     8
#>  5 5598758 S05       NA    NA    NA     9     1     7    NA     1     7    NA
#>  6 5598758 S06        1    NA    NA    NA    NA     5     2    NA    NA    NA
#>  7 5598758 S07        3    NA     3     1     8    NA     8     9    NA     3
#>  8 5598758 S08        7     8     3     1    NA     4    NA     1     6    NA
#>  9 5598758 S09        5    NA     6     8    NA     8     5    NA     1    NA
#> 10 5598758 S010       4     5    NA    NA     6     7    NA     5     4     7
#> # … with 26 more rows, and 2 more variables: S011 <dbl>, S012 <dbl>

代表 package (v2.0.1) 于 2022 年 2 月 6 日创建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM