0
我有一個面板,看起來像比較嵌套循環
df <-read.table(text="
preis10_6 akt_datum10_6 preis11_6 akt_datum11_6
1.55 10.06.2014 1.45 10.06.2014
1.56 09.06.2014 1.49 11.06.2014
",header=TRUE,sep="")
在奇數列(preise
)包含收集在那一天,而偶數列(akt_datum
)包含信息的價格與列標題進入細胞關於數據的話題性。因此,當df[2, 2]
是09.06.2014
這意味着df[1:2, 2]
中的信息是從前一天開始的。我想設置這些案例NA
。
這是我迄今所做的:
# Instrall stringr for the function str_sub
require(stringr) || install.packages("stringr")
# Get indices for the columns with topicality information
spalten <- seq(2, length(df), 2)
# Loop over these columns
for (spalte in spalten) {
# Construct the benchmark date from the column name
splitter <- str_sub(names(df)[spalte], 10, -1)
splitter <- strsplit(splitter, "_")
# Account for the case where the column name is in short time format (no trailing 0)
splitter[[1]][1] <- ifelse(nchar(splitter[[1]][1])==1,
paste0("0", splitter[[1]][1]),
splitter[[1]][1]
)
splitter[[1]][2] <- ifelse(nchar(splitter[[1]][2])==1,
paste0("0", splitter[[1]][2]),
splitter[[1]][2]
)
date <- paste(splitter[[1]][1], splitter[[1]][2], "2014", sep=".")
# Loop over all rows in the actual column
for (zeile in 1:nrow(df)) {
# and set the cell and the one before equal to NA
ifelse(df[zeile, spalte]!=date, df[zeile, spalte] <- df[zeile, spalte-1] <- NA, "")
}
}
這工作,但需要年齡,因爲我有事實933x324面板。也就是說,我每天有933個價格和時事信息,總共162天,這使得162個價格熱門對= 324列。
我該如何使此過程更快?
看起來不錯,但我怎麼能擴大到933行和324列的情況? – MERose 2014-10-27 11:52:52
@MERose它應該適用於擴展行數的情況。但是,您需要修改它以完成更多列所需的操作。我發現你的帖子不清楚你想在這種情況下做什麼。也許你澄清你想要什麼,並擴大你的數據示例了一下? – 2014-10-27 11:56:43
完成。它基本上是更多觀察(每天行)和更多天(具有價格和時事性質的專題信息的專欄)。 – MERose 2014-10-27 16:12:32