我需要使用另一个数据框的日期( date.index )更改给定数据框( fruits.df )的索引值。
示例数据:
# 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)
这会产生以下日期框架:
日期索引数据框的示例数据:
date.index <- data.frame(Days = seq(as.Date("2017-07-01"),
as.Date("2017-07-20"), by = 1), index = as.integer(1:20))
所以我需要的是以下内容:
我已尝试使用dplyr的过滤器功能,但只有在我明确选择列时才有效。
不起作用:
filtered_found_Index <- filter(date.index, index %in%
fruits.df)
有效,但我需要与整个df同时进行:
filtered_found_Index <- filter(date.index, index %in%
fruits.df$**Bananas**)
答案 0 :(得分:3)
您可以在match
的每一列上使用fruits.df
,即
fruits.df[] <- lapply(fruits.df, function(i) date.index$Days[match(i, date.index$index)])
给出,
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>