我有一個如下所示的資料集:
data <- tribble(
~Date, ~Ticker, ~Close, ~Open,
"1989-09-11","COND",77.3292,77.3292,
"1989-09-12","COND",77.4435,77.4435,
"1989-09-13","COND",76.3118,76.3118,
"1989-09-14","COND",75.5309,75.6344,
"1989-09-15","COND",75.6598,75.4675)
# A tibble: 5 x 4
Date Ticker Close Open
<chr> <chr> <dbl> <dbl>
1 1989-09-11 COND 77.3 77.3
2 1989-09-12 COND 77.4 77.4
3 1989-09-13 COND 76.3 76.3
4 1989-09-14 COND 75.5 75.6
5 1989-09-15 COND 75.7 75.5
它的問題在于,在某個日期之前,收盤價與開盤價相同。我想要做的是撰寫一個函式來檢查開盤價和收盤價是否相同,如果是這種情況,它將用前一行的收盤價替換開盤價。如果應用于上述資料,它將按如下方式轉換資料:
# A tibble: 5 x 4
Date Ticker Close Open
<chr> <chr> <dbl> <dbl>
1 1989-09-11 COND 77.3 NA
2 1989-09-12 COND 77.4 77.3
3 1989-09-13 COND 76.3 77.4
4 1989-09-14 COND 75.5 75.6
5 1989-09-15 COND 75.7 75.5
我嘗試使用 if 陳述句來執行此操作,但是一旦我嘗試將“關閉”列中的前一行中的值獲取到當前的“打開”值,就會遇到問題。
uj5u.com熱心網友回復:
在 中dplyr,這是一個簡單mutate的lag.
library(dplyr)
data %>%
mutate(Open = if_else(Open == Close, lag(Close), Open))
## A tibble: 5 x 4
# Date Ticker Close Open
# <chr> <chr> <dbl> <dbl>
#1 1989-09-11 COND 77.3 NA
#2 1989-09-12 COND 77.4 77.3
#3 1989-09-13 COND 76.3 77.4
#4 1989-09-14 COND 75.5 75.6
#5 1989-09-15 COND 75.7 75.5
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/358139.html
下一篇:降級Nodejs和Npm
