【问题标题】:integrate databases of different rows by multiple conditions in r在r中通过多个条件集成不同行的数据库
【发布时间】:2015-04-21 04:59:10
【问题描述】:

我尝试了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

“熟悉”、“pb_type”、“性别”和“试用”是我选择行并创建唯一组合的条件。

我想添加其他列“lower”、“upper”和“fit” 到我更大的数据集。根据我更大的数据库中的条件“id”,每一行都必须重复 6 次

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

这是我尝试过的: 大数据集是“原始数据”,小数据集是“模拟”

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 包...这可能是解决方案。

我发现问题又长又复杂,请帮我完善一下!

感谢您的任何意见 万事如意

【问题讨论】:

  • 你对merge的处理是什么?
  • news&lt;-merge(x =simulation , y =raw_data , by = c("familiarity","sex" , "trial","pb_type"), all.y=TRUE)

标签: r dataset conditional-statements multiple-databases


【解决方案1】:

如果我对您的问题的理解正确,您想使用已显示为键的数据表的前四个变量的组合来加入吗?请说明情况是否如此,这可能有助于查看您尝试合并的其他数据表。

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

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

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

【讨论】:

  • 太容易了!我什至尝试了其中一个,但由于数据库的位置(我认为),我得到了不同的结果。我一定要更深入地研究这个包!!!
猜你喜欢
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2016-05-19
  • 2015-06-04
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
相关资源
最近更新 更多