2017-09-06 2 views
1

ich brauche die Indexwerte eines gegebenen Datenrahmens zu ändern (fruits.df) mit Daten eines anderen Datenrahmens (date.index).Indexwerte eines Datenrahmens Ersetzen mit Daten eines anderen Datenrahmens

Beispieldaten:

# fruits.df  
x <- 1:5 
y <- 1:12 
z <- 1:16 
w <- 1:7 
fruits.list <- list(Apples = x, Bananas = y, Grapes = z, Kiwis = w) 

library(qpcR) 
fruits.df <- do.call(qpcR:::cbind.na, lapply(
    fruits.list, data.frame)) 

names(fruits.df) <- names(fruits.list) 

Dies ergibt die folgende Datum Rahmen:

enter image description here

Beispieldaten für den Index Datenrahmen Datum:

date.index <- data.frame(Days = seq(as.Date("2017-07-01"), 
    as.Date("2017-07-20"), by = 1), index = as.integer(1:20)) 

Also, was ich brauche ist das Folgende:

enter image description here

Ich habe versucht, ti die Filter Funktion von dplyr verwenden, aber es funktioniert nur, wenn ich explizit eine Spalte auswählen.

funktioniert nicht:

filtered_found_Index <- filter(date.index, index %in% 
    fruits.df) 

Works, aber ich brauche es zugleich mit der ganzen df zu tun:

filtered_found_Index <- filter(date.index, index %in% 
    fruits.df$**Bananas**) 

Antwort

3

Sie match auf jeder Spalte Ihrer fruits.df verwenden können, dh

fruits.df[] <- lapply(fruits.df, function(i) date.index$Days[match(i, date.index$index)]) 

die gibt,

 Apples Bananas  Grapes  Kiwis 
1 2017-07-01 2017-07-01 2017-07-01 2017-07-01 
2 2017-07-02 2017-07-02 2017-07-02 2017-07-02 
3 2017-07-03 2017-07-03 2017-07-03 2017-07-03 
4 2017-07-04 2017-07-04 2017-07-04 2017-07-04 
5 2017-07-05 2017-07-05 2017-07-05 2017-07-05 
6  <NA> 2017-07-06 2017-07-06 2017-07-06 
7  <NA> 2017-07-07 2017-07-07 2017-07-07 
8  <NA> 2017-07-08 2017-07-08  <NA> 
9  <NA> 2017-07-09 2017-07-09  <NA> 
10  <NA> 2017-07-10 2017-07-10  <NA> 
11  <NA> 2017-07-11 2017-07-11  <NA> 
12  <NA> 2017-07-12 2017-07-12  <NA> 
13  <NA>  <NA> 2017-07-13  <NA> 
14  <NA>  <NA> 2017-07-14  <NA> 
15  <NA>  <NA> 2017-07-15  <NA> 
16  <NA>  <NA> 2017-07-16  <NA> 
Verwandte Themen