2016-03-30 5 views
1

У меня есть DF1 и DF2 с одинаковой размерности, например,Loop два кадра данных, чтобы сделать мета-анализ

DF1 
hr se   m 
1 0.5 1.5 a 
2 1.5 2.5 b 
3 2.5 3.5 c 
4 3.5 4.5 d 

DF2 
hr se   m 
5 4.5 5.5 a 
6 5.5 6.5 b 
7 6.5 7.5 c 
8 7.5 8.5 d 

мне нужно сделать мета-анализ. Я знаю, что для всех строк одного DF, я могу сделать это как

library(rmeta) 
d <- meta.summaries(DF1$hr, DF1$se, names = DF1$m, method = c("fixed")) 

Но что я хочу сделать мета-анализ для каждой строки из этих двух кадров данных. Например, описание: row 1 из DF1 выполнен анализ с использованием row 1 из DF2. Я мог предположить, что мне нужна петля или функция lapply. Благодарим вас за любые советы или предложения.

+0

неясно, не могли бы вы привести пример вывода, который вы хотите? –

ответ

2

Одним из вариантов было бы просто использовать rbind, а затем split по m, чтобы получить список:

df3 <- rbind(df1, df2) 
split(df3, df3$m) 

$a 
    hr se x m 
1 1 0.5 1.5 a 
5 5 4.5 5.5 a 

$b 
    hr se x m 
2 2 1.5 2.5 b 
6 6 5.5 6.5 b 

$c 
    hr se x m 
3 3 2.5 3.5 c 
7 7 6.5 7.5 c 

$d 
    hr se x m 
4 4 3.5 4.5 d 
8 8 7.5 8.5 d 

Вы можете использовать for петлю или lapply, чтобы получить результаты. Для этого просто Google для for loop R или apply family R.

+0

Спасибо! это крутой наконечник, чтобы начать! я попробую – HoHoHo

+0

Можете ли вы, пожалуйста, помочь мне больше. Я попробовал 'for loop'. Я попробовал 'for (i в 1: length (A)) { out <-meta.summaries (A $ hr, A $ se, names = A $ metabolite, method = c (" fixed "))}', где 'A' разделен' df' – HoHoHo

+0

Close :) Я думаю, что это должно быть 'A [[i]]' в функции 'meta.summaries', так как' A' - это список. С помощью 'A [[i]]' вы извлекаете i-й фрейм данных, после чего вы можете делать '$ hr' и т. Д. – Laterow

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

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