我有一个包含20个数据集的列表。每个数据集基本上是:
library(lubridate)
Date <- c("2010-01-28", "2010-01-28", "2010-02-28",
"2010-02-28", "2010-02-28", "2010-02-28",
"2010-01-28", "2010-01-28", "2010-02-28",
"2010-02-28")
Date <- as_date(Date)
Country <- rep("Bolivia", 10)
Value_A <- 1:10
df <- data.frame(Date, Country, Value_A)
因此,我制作了一个小表,其中包含最后一个值,最后一个-1和最后一个-7。
Time <- c("Today", "Yesterday", "One week ago")
Value <- c(df$Value_A[nrow(df)], df$Value_A[nrow(df)-1], df$Value_A[nrow(df)-7])
table <- data.frame(Time, Value)
tibble(table)
Time Value
<chr> <int>
1 Today 10
2 Yesterday 9
3 One week ago 3
我想要的是:执行相同的过程,但自动处理列表中的每个数据集并存储到另一个列表中。
附:所有数据集都有相同的变量,只是改变了国家。
您可以使用数据框lapply
列表(此处称为lst
),并使用单独的命名函数(或此处的匿名函数):
lapply(lst, function(x) {
nr <- nrow(x)
data.frame(
Time = c("Today", "Yesterday", "One week ago"),
Value = c(x[["Value_A"]][nr], x[["Value_A"]][nr-1], x[["Value_A"]][nr-7])
)
})
结果应该是与示例中的数据帧相似的数据帧列表。根据Country
需要,该注释将被忽略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句