2015-03-24 5 views
0

Так что этот вопрос включает в себя слияние двух кадров данных из разрозненных длина ..Объединение разрозненных данных фреймов

пример кода:

library(ggplot2) 
p_i = data.frame(date=sample(1:40,20,replace=F),index_1 = runif(20,0,1),index_2 = runif(20,0,2)) 

p_i<-p_i[with(p_i,order(date)),] 
w_d = data.frame(date=c(1:40),C=runif(40,2,38)) 
y_w <- seq(0, 40, length = 9) 
x_w <- c(unique(p_i$date)) 


p_w <- ggplot(w_d, aes(x = date, y = C))+ 
    geom_bin2d(breaks = list(x = x_w, y = y_w))+ 
    scale_fill_continuous(low = "#99CCFF", high = "#CC0000", space = "Lab", na.value = "grey50", guide = "colourbar") 


w_dat <- ggplot_build(p_w)$data[[1]] 

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

+0

Вам нужна соответствующая переменная, и вы можете использовать одну из функций соединения из dplyr. Прямо сейчас w_dat и p_i не имеют никакой информации, так как вы знаете, что происходит? – Michael

+0

w_dat основан на w_d, где у меня есть столбец даты. Столбец xmin или xmax w_dat будет представлять собой информацию, разделяемую обеими таблицами. – SeldomSeenSlim

+0

Диапазон от 'xmin' до' xmax' может иметь перекрытия, т. Е. У вас есть xmin = 24 и xmax = 29 для count = 1 и count = 2 (по крайней мере, когда я запускал ваш пример кода). – Daniel

ответ

1

К сожалению, я путать w_d с w_dat

Вы можете использовать dplyr для этого.

library(dplyr) 
mydf <- full_join(p_i, w_d, by = "date") 

Если вы хотите удалить строки с missings, используйте filter(mydf, !is.na(index_1)).

+0

Да, w_dat была на самом деле просто моей попыткой принудить два кадра данных к одному. Извините, если это сбивает с толку. – SeldomSeenSlim

+0

Это ближе к тому, что я пытаюсь сделать, но не совсем. Я пытаюсь представить набор столбцов в этот новый dataframe, который соответствует заданному диапазону в w_d $ C. То, что я хочу заполнить столбцами, - это количество экземпляров в диапазоне дат от p_i (включая число 0), где может иметься диапазон значений w_d $ C. Если бы C была температурой, идея была бы «Сколько измерений было проведено в заданном диапазоне температур и заданном временном интервале?», Диапазон температур находится в виде столбцов, в этом случае временной диапазон основан на датах p_i и интервале температур произвольным. – SeldomSeenSlim

0

Так я приспособил ответ Daniel при условии, чтобы построить полный кадр данных, в том числе и эти строки:

w_sum<-ddply(w_dat, .(xmin,xmax,ymax), summarize,date=xmax,count=count) 

mydf <- full_join(p_i, w_sum, by = "date") 

это дает мне новый новый кадр данных, который эффективно пересечение первых двух кадров данных.

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