匹配不同文件中不同大小的 2 列的值,并返回其中一个文件的第三列的相应值

matching values of 2 columns of different sizes in different files and returning corresponding value of third column of one of those files

我有一个包含每个试验信息的概览文件的工作簿


    Trial   | date| time| call| social status
    Trial001 xxx   xxx    y     Single alone
    Trial002 xxx   xxx    n     pair with partner
    Trial003 xxx   xxx    n     pair with partner

和一本工作簿,其中包含一个文件,其中包含每次试验中每个人(按行)的不同行为。 (试验之间的受试者不同,但由于 BORIS 都称为 F1)


    Subject | Trial    | behavior | total count | mean duration (S) | stdv 
    F1      | Trial001 | jump     | 1           | 5                 | stdv
    F1      | Trial001 | walk     | 2           | 10                | stdv
    F1      | Trial002 | jump     | 3           | 10                | stdv
    F1      | Trial002 | walk     | 3           | 10                | stdv
    F1      | Trial002 | no view  | 3           | 50                | stdv

现在我想在行为文件中创建一个列,包含相应概述试验中提到的社会地位。

我以为 left_join 会解决我的问题,但是当我尝试这个时它给了我一个错误,说它需要 ~name 或者它 returns 我的整个变异加入代码到我的控制台填充该列。

在这里,我用 join

的结果覆盖 data.frame behavior
behavior <- behavior %>%
  left_join(overview %>% select(Trial, social_status),
            by="Trial")

输出:

  Subject Trial    behavior total_count mean_duration stdv  social_status    
  <chr>   <chr>    <chr>          <dbl>         <dbl> <chr> <chr>            
1 F1      Trial001 jump               1             5 stdv  Single alone     
2 F1      Trial001 walk               2            10 stdv  Single alone     
3 F1      Trial002 jump               3            10 stdv  pair with partner
4 F1      Trial002 walk               3            10 stdv  pair with partner
5 F1      Trial002 no view            3            50 stdv  pair with partner

输入:

# Behavior
structure(list(Subject = c("F1", "F1", "F1", "F1", "F1"), Trial = c("Trial001", 
"Trial001", "Trial002", "Trial002", "Trial002"), behavior = c("jump", 
"walk", "jump", "walk", "no view"), total_count = c(1, 2, 3, 
3, 3), mean_duration = c(5, 10, 10, 10, 50), stdv = c("stdv", 
"stdv", "stdv", "stdv", "stdv"), social_status = c("Single alone", 
"Single alone", "pair with partner", "pair with partner", "pair with partner"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-5L))

# overview
structure(list(Trial = c("Trial001", "Trial002", "Trial003"), 
    date = c("xxx", "xxx", "xxx"), time = c("xxx", "xxx", "xxx"
    ), call = c("y", "n", "n"), social_status = c("Single alone", 
    "pair with partner", "pair with partner")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -3L))