【发布时间】:2016-08-01 05:24:10
【问题描述】:
下面是我通过运行查询获得的数据框。请注意,df1 是一个动态数据框,它可能会返回一个空 df 或部分 df,其中并非所有季度如下所示:
df1 FISC_QTR_VAL 收入 1 2014-Q1 0.00 2 2014-Q2 299111.86 3 2014-Q3 174071.98 4 2014-Q4 257655.30 5 2015-Q1 0.00 6 2015-Q2 317118.63 7 2015-Q3 145461.88 8 2015-Q4 162972.41 9 2016-Q1 96896.04 10 2016-Q2 135058.78 11 2016-Q3 111773.77 12 2016-Q4 138479.28 13 2017-Q1 169276.04我想检查收入列中所有行的值,看看除 2014-Q1 行之外是否有任何值为 0 或负数
此外,df1 是动态的,将仅包含 12 个季度的数据,即当我到达下一个季度(即 2017-Q2)时,与 2014-Q2 相关的收入变为 0,它看起来像这样:
df1 FISC_QTR_VAL 收入 1 2014-Q1 0.00 2 2014-Q2 0.00 3 2014-Q3 174071.98 4 2014-Q4 257655.30 5 2015-Q1 0.00 6 2015-Q2 317118.63 7 2015-Q3 145461.88 8 2015-Q4 162972.41 9 2016-Q1 96896.04 10 2016-Q2 135058.78 11 2016-Q3 111773.77 12 2016-Q4 138479.28 13 2017-Q1 169276.04 14 2017-Q2 146253.64在上述情况下,我需要通过排除 2014-Q1 和 2014-Q2 来检查收入列的所有行
这会随着季度的进展而继续
需要您的帮助来生成代码,该代码将动态执行上述所有排除行的步骤,并仅检查对特定季度重要的行
目前,我正在使用以下代码:
#Taking the first df1 into consideration which has 2017-Q1 as the last quarter
startQtr <- "2014-Q2" #This value is dynamically achieved and will change as we move ahead. Next quarter, the value changes to 2014-Q3 and so on
if(length(df1[["FISC_QTR_VAL"]][nrow(df1)-11] == startQtr) == 1){
if(nrow(df1[df1$Revenue < 0,]) == 0 & nrow(df1[df1$Revenue == 0,]) == 0){
df1 <- df1 %>% slice((nrow(df1)-11):(nrow(df1)))
}
}
第一个 IF 循环检查 df1 中是否有数据 如果df为空,
df1[["FISC_QTR_VAL"]][nrow(df1)-10] == startQtr条件将返回 numeric(0),其长度为 0,因此条件失败
如果不是,则进入下一个 IF 循环并检查收入列中的 -ve 和 0 值。但它适用于所有行。我希望在这种情况下排除 2014 年第一季度,并且展望未来的几个季度,希望条件是动态的,如上所述。
另外,我不想在 if 条件之前对数据集进行切片,因为如果初始数据帧 df1 返回 1 行或 2 行并且我们尝试进一步切片,代码会抛出错误
谢谢
【问题讨论】:
-
你的预期输出是什么
-
很难分析输出,因为它是一个长期的线性回归过程。上述方法只是我们输入数据并检查选择行中的异常(如 0 或负值)的起点
标签: r