【问题标题】:R function to select specific week days [duplicate]R函数选择特定的工作日[重复]
【发布时间】:2020-07-11 05:41:29
【问题描述】:

我正在做一个项目,很高兴得到您的帮助。

我正在研究股票以及工作日对业绩的影响,有没有办法从特定工作日(例如星期二)获取数据框 (df) 的所有值(例如标准普尔 500 指数)并输入这些值新列中不同数据框 (df2) 中的值?

非常感谢,

费迪南德

【问题讨论】:

  • 你能分享一个你的数据框样本吗?
  • 没有接受答案的“重复”询问“POSIXct”和“lubridate”,这不一定是OP在这里问的......
  • @Trusky 代码在weekdays(as.Date(D$Time)); subset(D, D$Weekday == "Tuesday") 那里。它不需要有一个公认的答案

标签: r dataframe


【解决方案1】:
df <- read.csv("AAPL.csv")  # from Yahoo! Finance
  > head(df)                                                          
          Date   Open   High    Low  Close Adj.Close   Volume         
  1 2019-07-10 201.85 203.73 201.56 203.23  200.8332 17897100         
  2 2019-07-11 203.31 204.39 201.71 201.75  199.3706 20191800         
  3 2019-07-12 202.45 204.00 202.20 203.30  200.9023 17595200         
  4 2019-07-15 204.09 205.87 204.00 205.21  202.7898 16947400         
  5 2019-07-16 204.59 206.11 203.50 204.50  202.0882 16866800         
  6 2019-07-17 204.05 205.09 203.27 203.35  200.9517 14107500
df$Day <- format(as.Date(df$Date), "%A")  # Get the day
idx <- df$Day == "Tuesday"  # Where are the Tuesdays ?
df2 <- df[idx, ]  # Logical indexing
  > head(df2)
           Date   Open   High    Low  Close Adj.Close   Volume     Day
  5  2019-07-16 204.59 206.11 203.50 204.50  202.0882 16866800 Tuesday
  10 2019-07-23 208.46 208.91 207.29 208.84  206.3770 18355200 Tuesday
  15 2019-07-30 208.76 210.16 207.31 208.78  206.3177 33935700 Tuesday
  20 2019-08-06 196.31 198.07 194.04 197.00  194.6766 35824800 Tuesday
  25 2019-08-13 201.02 212.14 200.48 208.97  207.2901 47218500 Tuesday
  30 2019-08-20 210.88 213.35 210.32 210.36  208.6689 26884300 Tuesday

你的function

myfunction <- function(mydf) {                                                  
  df$Day <- format(as.Date(df$Date), "%A")                                                                          
  idx <- df$Day == "Tuesday"                                                                                        
  df2 <- df[idx, ]                                                                                                  
}

测试myfunction

  > out = myfunction(df)                                              
  > head(out)                                                         
           Date   Open   High    Low  Close Adj.Close   Volume     Day
  5  2019-07-16 204.59 206.11 203.50 204.50  202.0882 16866800 Tuesday
  10 2019-07-23 208.46 208.91 207.29 208.84  206.3770 18355200 Tuesday
  15 2019-07-30 208.76 210.16 207.31 208.78  206.3177 33935700 Tuesday
  20 2019-08-06 196.31 198.07 194.04 197.00  194.6766 35824800 Tuesday
  25 2019-08-13 201.02 212.14 200.48 208.97  207.2901 47218500 Tuesday
  30 2019-08-20 210.88 213.35 210.32 210.36  208.6689 26884300 Tuesday

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多