2015-02-19 5 views
0

Я пробовал merge и все серии из for/if петель, из которых лучшее, что я отчитаю. Я прочитал несколько сообщений, но не смог найти ничего подходящего.интегрировать базы данных разных строк по нескольким условиям в r

У меня есть 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», «секс» и «испытание» мои условия для выбора строк и создает Уникальную комбинацию.

Я хотел бы добавить другие колонки "lower", "upper" и "fit" к моему более крупному набору данных. Каждая из этих строк должна повторяться 6 раз после условия «id», которое в моей большей базе данных имеет

Я не могу использовать rep или так потому, что порядок условий в разных по 2 наборам данных (например, в столбце знакомости «мат», не приходит первый в обеих)

Вот что я пробовал: большого набора данных «сырые данные», малые является «моделирование»

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 ... это может быть решением.

Я понимаю, что вопрос длинный и сложный, пожалуйста, помогите мне в его доработке!

спасибо за любой вклад все лучшее

+0

Каков был ваш подход с 'merge'? –

+0

'news <-merge (x = simulation, y = raw_data, by = c (" знакомство "," секс "," пробный "," pb_type "), all.y = TRUE)' –

ответ

0

Если я понять ваш вопрос правильно, вы хотите присоединиться, используя комбинации первых четырех переменных таблицы данных вы показанными как ключ? Просьба уточнить, если это не так, и это может помочь увидеть другую таблицу данных, которую вы пытаетесь объединить.

Это, как вы хотите?

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

Это не может быть необходимо указать инфу переменные в зависимости от того, что ваша вторая таблица данных выглядит, но это не помешает.

+0

Удивительно, что это было так просто ! Я даже пробовал один из них, но у меня разные результаты из-за позиции базы данных (я думаю). Я определенно должен смотреть глубже в этот пакет !!! –

 Смежные вопросы

  • Нет связанных вопросов^_^