通过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 的样子指定连接变量,但这不会有什么坏处。
我尝试了 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 的样子指定连接变量,但这不会有什么坏处。