Создайте несколько условных строк и добавьте определенные значения из другого фрейма данных

Добрый день,

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

В качестве примера предположим, что у меня есть кадр данных, который дает определенную информацию для каждого источника (называемого стеком), как показано на рисунке ниже:

введите здесь описание изображения

И у меня есть следующий входной файл: введите здесь описание изображения

Я пытаюсь создать новую строку в начале каждого источника и добавить соответствующую информацию из информационной таблицы (первый рисунок), чтобы результат выглядел так:

введите здесь описание изображения

Я знаю, как добавить новую строку в начале кадра данных, например, так:

v1=c(1,2,3)
v2= c(7,8,9)
dat= data.frame(v1,v2)
new_dat <- rbind(c(0,10000), dat)

но не уверен, как обусловить это, чтобы добавить строку в определенной позиции с информацией из рисунка 1.

У меня есть много источников и очень большой набор данных, но чтобы дать некоторые воспроизводимые данные, как показано в 2 таблицах, см. Ниже входные таблицы, которые я тестирую:

Информационная таблица (первый рисунок):

> dput(stack_info)
structure(list(SNAME = structure(1:2, .Label = c("Stack 1", "Stack 2"
), class = "factor"), ISVARY = c(1L, 4L), VELVOL = c(1L, 4L), 
    TEMPDENS = c(0L, 2L), `DUM 1` = c(999L, 999L), `DUM 2` = c(999L, 
    999L), NPOL = c(2L, 2L), `EXIT VEL` = c(26.2, 22.4), TEMP = c(341L, 
    328L), `STACK DIAM` = c(1.5, 2.5), W = c(0L, 15L), Nox = c(39, 
    33.3), Sox = c(15.5, 17.9)), .Names = c("SNAME", "ISVARY", 
"VELVOL", "TEMPDENS", "DUM 1", "DUM 2", "NPOL", "EXIT VEL", "TEMP", 
"STACK DIAM", "W", "Nox", "Sox"), class = "data.frame", row.names = c(NA, 
-2L))

входная таблица, с которой я работаю (второй рисунок):

> dput(sample)
structure(list(Source = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L), .Label = c("Stack 1", "Stack 2"), class = "factor"), 
    year = c(2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 
    2010L, 2010L), day = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
    ), hour = c(0L, 1L, 2L, 3L, 0L, 1L, 2L, 3L, 4L), `EXIT VEL` = c(26.2, 
    26.2, 26.2, 26.2, 22.4, 22.4, 22.4, 22.4, 22.4), TEMP = c(341L, 
    341L, 341L, 341L, 328L, 328L, 328L, 328L, 328L), `STACK DIAM` = c(1.5, 
    1.5, 1.5, 1.5, 2.5, 2.5, 2.5, 2.5, 2.5), W = c(0L, 0L, 0L, 
    0L, 15L, 15L, 15L, 15L, 15L), Nox = c(39, 39, 39, 39, 33.3, 
    33.3, 33.3, 33.3, 33.3), Sox = c(15.5, 15.5, 15.5, 15.5, 
    17.9, 17.9, 17.9, 17.9, 17.9)), .Names = c("Source", "year", 
"day", "hour", "EXIT VEL", "TEMP", "STACK DIAM", "W", "Nox", 
"Sox"), class = "data.frame", row.names = c(NA, -9L))

Я был бы признателен, если бы я мог получить какие-либо рекомендации о том, как добавить условную строку со значениями из другого фрейма данных.

заранее спасибо.


person Achak    schedule 16.09.2015    source источник
comment
Итак, вы хотите добавить строку имен столбцов? Это оно? Если да, то это очень плохая идея. Либо оставьте данные такими, какие они есть, либо разделите их на несколько фреймов данных.   -  person Molx    schedule 16.09.2015
comment
Привет @Molx, это своего рода имена столбцов, но их нужно указывать в начале каждого источника на основе исходной информации. Именно так мне нужно создать шаблон, который очень необычен с точки зрения структуры данных, и каждый источник будет сложен с этим необычным стилем заголовков, которые затем мне нужно преобразовать в текстовый файл для чтения в модель.   -  person Achak    schedule 16.09.2015
comment
Тогда, вероятно, лучше всего разделить их на отдельные кадры данных, дать каждому соответствующий заголовок, а затем записать в файл, используя append = TRUE. Я думаю, это должно сработать.   -  person Molx    schedule 16.09.2015
comment
спасибо @Molx, мне удалось разделить данные в списке с помощью этого: out <- split( test2 , f = test2$Source), но я изо всех сил пытаюсь извлечь имена столбцов из информационного набора данных и назначить новые таблицы. Есть ли у вас какие-либо рекомендации о том, как я могу сделать это в цикле и добавить обратно к одному фрейму данных, как показано в примере желаемого выходного рисунка? Я могу ошибаться, думая, что это должно быть в цикле? заранее спасибо   -  person Achak    schedule 16.09.2015
comment
теперь это решено, так как с помощью @Tensibai мне удалось создать код, подходящий для моих исходных наборов данных, который теперь работает, см. вопрос - ссылка   -  person Achak    schedule 17.09.2015