将多个相同长度的时间序列数据帧添加到一列中
Add multiple same length time-series data frames into one column
想将十五个数据框中的一个变量按日期汇总到一列中。
尝试将它们全部转换为 xts,但在将它们从阶乘转换回数字时遇到了挑战。
library(xts)
ts1<-as.xts(ts(c(1:12),star=c(2015,1),freq=12))
ts2<-as.xts(ts(c(13:24),star=c(2015,1),freq=12))
ts3<-as.xts(ts(c(13:24),star=c(2015,1),freq=12))
str(ts4 <- c(ts1, ts2,ts3))
还查看了 tibble vignette,但无法将它们正确地添加在一起。还尝试使用 rowsum 但仅当数据位于一个数据框中时才有效。谢谢你的时间。
我认为这会生成您要查找的内容。 param_df
将是一个数据框,其中包含每对分布的 N、均值和 sd。
# Generate some fake parameters
param_df <- data.frame(n_1 = sample(50:100, 10, replace = T),
mean_1 = sample(5:10, 10, replace = T),
sd_1 = sample(1:9, 10, replace = T),
n_2 = sample(50:100, 10, replace = T),
mean_2 = sample(5:10, 10, replace = T),
sd_2 = sample(1:9, 10, replace = T),
variable_name = paste0("variable_", 1:10),
stringsAsFactors = F)
# Function that will generate the distributions and calculate statistics
my_function <- function(n_1, mean_1, sd_1, n_2, mean_2, sd_2, var_name){
samp_A <- rnorm(as.numeric(n_1), as.numeric(mean_1), as.numeric(sd_1))
samp_B <- rnorm(as.numeric(n_2), as.numeric(mean_2), as.numeric(sd_2))
var_score <- (mean(samp_A) + mean(samp_B)) / 2
var_range <- sd(samp_A)
return(c(Variable = var_name, Score = var_score, Range = var_range))
}
# Apply the function to the param_df by row, passing each column as an argument to the function
df <- apply(param_df, 1, function(params) my_function(params[1],
params[2],
params[3],
params[4],
params[5],
params[6],
params[7]))
# Convert to a dataframe
df <- as.data.frame(t(df))
请注意,此处的代码计算 "score" 的方式与上面的代码不同。我假设您想除均值之和并将 A 的均值与 B 的均值的一半相加。
想将十五个数据框中的一个变量按日期汇总到一列中。
尝试将它们全部转换为 xts,但在将它们从阶乘转换回数字时遇到了挑战。
library(xts)
ts1<-as.xts(ts(c(1:12),star=c(2015,1),freq=12))
ts2<-as.xts(ts(c(13:24),star=c(2015,1),freq=12))
ts3<-as.xts(ts(c(13:24),star=c(2015,1),freq=12))
str(ts4 <- c(ts1, ts2,ts3))
还查看了 tibble vignette,但无法将它们正确地添加在一起。还尝试使用 rowsum 但仅当数据位于一个数据框中时才有效。谢谢你的时间。
我认为这会生成您要查找的内容。 param_df
将是一个数据框,其中包含每对分布的 N、均值和 sd。
# Generate some fake parameters
param_df <- data.frame(n_1 = sample(50:100, 10, replace = T),
mean_1 = sample(5:10, 10, replace = T),
sd_1 = sample(1:9, 10, replace = T),
n_2 = sample(50:100, 10, replace = T),
mean_2 = sample(5:10, 10, replace = T),
sd_2 = sample(1:9, 10, replace = T),
variable_name = paste0("variable_", 1:10),
stringsAsFactors = F)
# Function that will generate the distributions and calculate statistics
my_function <- function(n_1, mean_1, sd_1, n_2, mean_2, sd_2, var_name){
samp_A <- rnorm(as.numeric(n_1), as.numeric(mean_1), as.numeric(sd_1))
samp_B <- rnorm(as.numeric(n_2), as.numeric(mean_2), as.numeric(sd_2))
var_score <- (mean(samp_A) + mean(samp_B)) / 2
var_range <- sd(samp_A)
return(c(Variable = var_name, Score = var_score, Range = var_range))
}
# Apply the function to the param_df by row, passing each column as an argument to the function
df <- apply(param_df, 1, function(params) my_function(params[1],
params[2],
params[3],
params[4],
params[5],
params[6],
params[7]))
# Convert to a dataframe
df <- as.data.frame(t(df))
请注意,此处的代码计算 "score" 的方式与上面的代码不同。我假设您想除均值之和并将 A 的均值与 B 的均值的一半相加。