【发布时间】:2021-02-18 20:04:33
【问题描述】:
我找不到解决这个问题的方法:对于我的数据框的每一列,我需要找到并放入一个新的数据框,所有负三元组(连续负值的序列)和单个值(或者正或负)按时间顺序跟在三连音之后。例如,在 TSL 列中,我需要保留值 -4、-1、-3、1 和相关日期。 我在 R 方面不是很资深,所以我花了相当多的时间试图找出不同的策略:for 循环和嵌套 ifs,dplyr 和 quantmod 用于时间序列和滞后。到目前为止,我一直没有成功。谁能指出我正确的方向?谢谢
<table>
<thead>
<tr>
<th>Date</th>
<th>TSL</th>
<th>FAS</th>
<th>GMV</th>
</tr>
<tr>
<th>2019-01-03</th>
<th>-3</th>
<th>-1</th>
<th>-4</th>
<tr>
<th>2019-01-04</th>
<th>5</th>
<th>3</th>
<th>3</th>
</tr><tr>
<th>2019-01-07</th>
<th>5</th>
<th>2</th>
<th>3</th>
</tr><tr>
<th>2019-01-08</th>
<th>0</th>
<th>0</th>
<th>1</th>
</tr><tr>
<th>2019-01-09</th>
<th>0</th>
<th>4</th>
<th>1</th>
</tr><tr>
<th>2019-01-10</th>
<th>1</th>
<th>-0</th>
<th>-1</th>
</tr><tr>
<th>2019-01-11</th>
<th>0</th>
<th>1</th>
<th>7</th>
</tr><tr>
<th>2019-01-14</th>
<th>-3</th>
<th>1</th>
<th>1</th>
</tr><tr>
<th>2019-01-15</th>
<th>2</th>
<th>-1</th>
<th>-0</th>
</tr><tr>
<th>2019-01-16</th>
<th>0</th>
<th>-6</th>
<th>0</th>
</tr><tr>
<th>2019-01-17</th>
<th>0</th>
<th>0</th>
<th>1</th>
</tr><tr>
<th>2019-01-18</th>
<th>-4</th>
<th>2</th>
<th>0</th>
</tr><tr>
<th>2019-01-22</th>
<th>-1</th>
<th>-0</th>
<th>-1</th>
</tr><tr>
<th>2019-01-23</th>
<th>-3</th>
<th>-1</th>
<th>-1</th>
</tr><tr>
<th>2019-01-24</th>
<th>1</th>
<th>3</th>
<th>1</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
数据
structure(list(Date = structure(c(17899, 17900, 17903, 17904, 17905, 17906, 17907, 17910, 17911, 17912, 17913, 17914, 17918, 17919, 17920), class = "Date"), TSL = c(-3L, 5L, 5L, 0L, 0L, 1L, 0L, -3L, 2L, 0L, 0L, -4L, -1L, -3L, 1L), FAS = c(-1L, 3L, 2L, 0L, 4L, 0L, 1L, 1L, -1L, -6L, 0L, 2L, 0L, -1L, 3L), GMV = c(-4L, 3L, 3L, 1L, 1L, -1L, 7L, 1L, 0L, 0L, 1L, 0L, -1L, -1L, 1L)), class = "data.frame", row.names = c(NA, -15L))
【问题讨论】:
-
您能否以一种我们无需解析 HTML 即可使用的方式粘贴您的数据?
dput(x)的输出通常很棒。 -
(我建议进行编辑,以明确的格式包含该示例数据。如果您不喜欢这样,我很抱歉,请随时回滚或删除它。)
-
非常感谢 r2evans 和 @Jordan 的建议,我花了一些时间研究这两者并提出了一个完全符合我需求的解决方案。可能效率不高(但它捕获了所有的三元组),无论如何:get_sets = 3 & rlesx$values == -1) ind