R 在多列df中计算每年的SE
我有几个数据帧的列表,如下所示:R 在多列df中计算每年的SE,r,R,我有几个数据帧的列表,如下所示: Year tex21.1 tex21.2 tex21.3 2015 0.2 NA 1 2016 0.3 0.4 0.99 2017 0.5 1.2 0.6 2018 NA 1.5 0.5 我想写一个函数,它接收这些数据帧并在其中循环,计算(1)每年所有行的平均值,(2)每年所有行的标准误差。像这样: calculate_function <- functi
Year tex21.1 tex21.2 tex21.3
2015 0.2 NA 1
2016 0.3 0.4 0.99
2017 0.5 1.2 0.6
2018 NA 1.5 0.5
我想写一个函数,它接收这些数据帧并在其中循环,计算(1)每年所有行的平均值,(2)每年所有行的标准误差。像这样:
calculate_function <- function (x) {
do something
}
calcs<-lapply(my_list, calculate_function)
> calcs[[1]]
Year mean SE
2015 value value
2016 value value
2017 value value
2018 value value
calculate\u函数如果我们需要计算每行的平均值,se
,则使用apply
和MARGIN=1
。使用lappy
在列表
元素上循环,然后使用apply
calculate_function <- function(x) {
cbind(x['Year'], t(apply(x[-1], 1, function(u)
c(mean = mean(u, na.rm = TRUE),
se = plotrix::std.error(u, na.rm = TRUE)))))
}
lapply(my_list, calculate_function)
数据
my_list如果我们需要计算每行的平均值,se
,则使用apply
和MARGIN=1
。使用lappy
在列表
元素上循环,然后使用apply
calculate_function <- function(x) {
cbind(x['Year'], t(apply(x[-1], 1, function(u)
c(mean = mean(u, na.rm = TRUE),
se = plotrix::std.error(u, na.rm = TRUE)))))
}
lapply(my_list, calculate_function)
数据
my_list另一个基本R选项,但类似于
calculate_函数另一个基本R选项,但类似于
计算函数
my_list <- list(structure(list(Year = 2015:2018, tex21.1 = c(0.2, 0.3, 0.5,
NA), tex21.2 = c(NA, 0.4, 1.2, 1.5), tex21.3 = c(1, 0.99, 0.6,
0.5)), class = "data.frame", row.names = c(NA, -4L)), structure(list(
Year = 2015:2018, tex21.1 = c(0.2, 0.3, 0.5, NA), tex21.2 = c(NA,
0.4, 1.2, 1.5), tex21.3 = c(1, 0.99, 0.6, 0.5)),
class = "data.frame", row.names = c(NA,
-4L)))
calculate_function <- function(x) {
cbind(
x[1],
do.call(
rbind,
apply(
x[-1],
1,
function(v) {
data.frame(
mean = mean(v, na.rm = TRUE),
se = sd(v, na.rm = TRUE) / sqrt(sum(!is.na(v)))
)
}
)
)
)
}