通过r中的多个条件集成不同行的数据库

integrate databases of different rows by multiple conditions in r

我尝试了 merge 和所有系列的 for/if 循环,其中最好的我将报告。 我读了好几篇文章,但找不到完全匹配的文章。

我有 2 个数据库,一个 360 行,另一个 60 行。 我想将较小的列中存在的一些列添加到较大的列中,按四个条件重复相同的数字,以便拥有 360 行数据集。

familiarity    pb_type  sex trial   lower      upper       fit
 mate          tet      m     1     1.760949   3.780915   2.809002
 familiar      tet      m     1     2.020926   3.986183   3.021357
 unfamiliar    tet      m     1     2.570472   4.499613   3.530639
 mate          stack    m     1     3.479230   5.441066   4.500652
 familiar      stack    m     1     2.934518   4.89067    3.904378

"familiarty"、"pb_type"、"sex" 和 "trial" 是我 select 行和创建唯一组合的条件。

我想添加其他列 "lower"、"upper" 和 "fit" 到我更大的数据集。在我更大的数据库中有

的条件 "id" 之后,每一行都必须重复 6 次

我不能使用 rep 左右,因为 2 数据集中条件的顺序不同(例如,在熟悉度列 "mate" 中,两者都没有排在第一位)

这是我尝试过的: 大数据集是 "raw data",小数据集是 "simulation"

max_count <- length(raw_data[,1])
count = 1
raw_data$lower <- NA
raw_data$upper <- NA
raw_data$mean <- NA

for(i in 1:length(simulation[,1])){    

    if(count<=max_count)
 {
     j<-count

     while(raw_data[j,3] == simulation[i,3] && raw_data[j,4] == simulation[i,4]&& raw_data[j,7] == simulation[i,2] && raw_data[j,8] == simulation[i,1]){


         raw_data$lower[[j]] <- simulation$lower[[i]]
         raw_data$upper[[j]] <- simulation$upper[[i]]
         raw_data$mean[[j]] <-  simulation$fit[[i]]   

     }
     count <-count+1

  }

} 

不幸的是,它总是在同一点进入无限循环,我想是因为条件的顺序不同。

不幸的是,我对软件包不满意 dplyr...这可能是解决方案。

我发现这个问题又长又复杂,请帮我细化一下!

感谢任何输入 一切顺利

如果我对你的问题的理解正确,你想使用数据的前四个变量的组合来加入 table 作为键吗?如果不是这种情况,请澄清,这可能有助于查看您尝试合并的其他数据 table。

也就是说,这是你想要的吗?

library(dplyr)
left_join(raw_data, simulation, by = c("familiarity","pb_type","sex","trial"))

可能没有必要根据您的其他数据 table 的样子指定连接变量,但这不会有什么坏处。