簡體   English   中英

R-循環后組合不同長度的數據幀

[英]R - combine data frames of different lengths after loop

我正在遍歷一系列15個文件。 我的循環如下所示:

for (i in 1:length(mod.f)) {
    do some stuff
    dataframe `df` is produced
}

循環的每次迭代都將產生一個具有兩列的數據框-日期和一些值,如以下示例所示:

df <- structure(list(date = structure(c(-43829, -43798, -43770, -43739, 
-43709, -43678, -43648, -43617, -43586, -43556, -43525, -43495, 
-43464, -43433, -43405, -43374, -43344, -43313, -43283, -43252
), class = "Date"), inmcm4 = c(71.4782417258324, 68.5037706662898, 
64.0571482842429, 62.8708849771957, 66.3121740437669, 62.7535770507166, 
62.2819567665719, 62.3014754255822, 58.6247123853888, 58.4425949480101, 
61.3534245382973, 68.2531958750396, 70.4892992599108, 70.1840748468477, 
64.6298343911645, 66.5280510648649, 65.2767506692563, 62.8944646174169, 
60.4309882672837, 58.7368776782633)), .Names = c("date", "inmcm4"
), row.names = c(NA, 20L), class = "data.frame")

這里的問題是,並非所有數據幀都具有相同的長度。 每個數據幀的長度如下:

1872 
1740 
1872 
1932 
1872 
1752 
1752 
1872 
1872 
672 
1872 
1872 
1956 
1956 
1872

結果,並非所有日期(例如df $ date)都相同。

我希望做的是在循環結束時將所有數據幀合並到一個數據幀中。 此最終數據幀應具有一個date列,其余的列將是每次迭代的值,將NA分配給不重疊的日期。

有關如何執行此操作的任何想法?

謝謝!

你可以試試

 Reduce(function(...) merge(..., by='date', all=TRUE), lst)

其中lst是data.frames的列表

數據

set.seed(24)
df2 <- df[sample(1:nrow(df),8, replace=FALSE),]
row.names(df2) <- NULL
lst <- list(df, df2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM