1

stats.stackexchange に移行されたこれについて、以前に質問しました。

そこからの回答の後、これを解決するための R での実装に関していくつか質問があり、ここで質問する必要があると考えました。

これは私が生産したいものです:

株式ごとに、価格と時間の 2 つの個別の列があります。エクイティ X の時間が存在し、エクイティ Y の時間が存在しない場合は、前の価格をベクトルに入れる必要があり、その逆も同様です。

ここでの解決策は if ループですか? ご協力いただきありがとうございます。

次の例のように:

X           Y   
price   time   price   time
10     540     20  540
11     541     21  541
12     542     22  543
13     544     23  544
14     545     24  545

price   time   price   time
10     540     20  540
11     541     21  541
12     542     21  542
12     543     22  543
13     544     23  544
14     545     24  545
4

1 に答える 1

5
x <- read.table(text = "price   time
 10     540
 11     541
 12     542
 13     544
 14     545", header = TRUE);

 y <- read.table(text = "price   time
  20  540
  21  541
  22  543
  23  544
  24  545", header = TRUE)

 big <- merge(x, y, all = TRUE, by = "time")
 big
 #   time price.x price.y
 # 1  540      10      20
 # 2  541      11      21
 # 3  542      12      NA
 # 4  543      NA      22
 # 5  544      13      23
 # 6  545      14      24

library(zoo)
big$price.x <- na.locf(big$price.x)
big$price.y <- na.locf(big$price.y)

最初の値が 、NAまたは 2 番目の値などである場合NA、以前のすべてのエントリに最初の非 NA 値を使用したいと思いますか?

例えば

NA,1,2,3,NA
# changed to
1,1,2,3,3

もしそうなら、これはうまくいきます:

replaceKEEPFIRST <- function(x) {
x2    <- na.locf(x)
diffx <- length(x) - length(x2)
val   <- c(rep(x2[1],diffx),x2)
return(val)
}

myx <- c(NA,1,2,3,NA)
myy <- c(1,2,3,NA)
replaceKEEPFIRST(myx)
replaceKEEPFIRST(myy)

そしてあなたの仕事のために:

big$price.x <- replaceKEEPFIRST(big$price.x)
big$price.y <- replaceKEEPFIRST(big$price.y)
于 2013-01-06T14:23:15.963 に答える