我有一个包含几个数据框的列表,每个数据框包含2个逗号“ date”和“ XXX_price”,例如波音价格,通用价格...
它们不在一张纸上。每个公司都有自己的工作表。
现在,我想将na.locf应用于所有公司的“价格”列。像这样:
Q <- list(Boeing, GM; ...)
Select from every company the column ending with "_price" and apply n.locf.
Afterwards I would like to add another column diff(log(XXX_price)).
Finally I would like to add all return columns in on sheet.
所以总结一下。我想知道如何在列表上应用函数,如何命名新列以及如何提取它们。必须和gsub放在一起。
但是我不知道该怎么做。
Date Boeing_price
12.11.2010 53.478
15.11.2010 53.918
16.11.2010 53.215
17.11.2010 52.978
18.11.2010 54.766
19.11.2010 53.901
22.11.2010 54.274
23.11.2010 53.91
24.11.2010 55.444
26.11.2010 54.927
29.11.2010 54.554
30.11.2010 54.054
Date GM_Price
12.11.2010 #NA
15.11.2010 #NA
16.11.2010 #NA
17.11.2010 28.5455
18.11.2010 29.5749
19.11.2010 29.6355
22.11.2010 #NA
23.11.2010 28.7618
24.11.2010 28.9607
26.11.2010 29.2376
29.11.2010 #NA
30.11.2010 29.5836
有人知道怎么做吗?
答案 0 :(得分:0)
最后使用注释中的数据进行尝试:
library(zoo)
f <- function(data) {
data[[2]] <- na.locf0(data[[2]])
data
}
L2 <- lapply(L, f)
另一种可能性是将数据帧合并为单个数据帧,并将其转换为zoo或xts对象并使用:
library(zoo)
z <- na.locf(read.zoo(do.call("merge", L)), na.rm = FALSE)
要获取xts对象:
library(xts)
X <- as.xts(z)
我们假设输入数据以可复制的形式显示在这里:
Lines1 <- "Date Boeing_price
12.11.2010 53.478
15.11.2010 53.918
16.11.2010 53.215
17.11.2010 52.978
18.11.2010 54.766
19.11.2010 53.901
22.11.2010 54.274
23.11.2010 53.91
24.11.2010 55.444
26.11.2010 54.927
29.11.2010 54.554
30.11.2010 54.054"
DF1 <- read.table(text = Lines1, header = TRUE, na.strings = "#NA")
DF1$Date <- as.Date(DF1$Date, "%d.%m.%Y")
Lines2 <- "Date GM_Price
12.11.2010 #NA
15.11.2010 #NA
16.11.2010 #NA
17.11.2010 28.5455
18.11.2010 29.5749
19.11.2010 29.6355
22.11.2010 #NA
23.11.2010 28.7618
24.11.2010 28.9607
26.11.2010 29.2376
29.11.2010 #NA
30.11.2010 29.5836"
DF2 <- read.table(text = Lines2, header = TRUE, na.strings = "#NA",
comment.char = "")
DF2$Date <- as.Date(DF2$Date, "%d.%m.%Y")
L <- list(DF1, DF2)