回答編集履歴

2

2022/11/13 06:28

投稿

melian
melian

スコア19825

test CHANGED
@@ -1,12 +1,16 @@
1
1
  [Pandas](http://pandas.pydata.org/) の rolling window function の様なモノ。
2
2
  ```julia
3
3
  n = 3 # window size
4
+
5
+ macro sma_val(idx)
6
+ :(sma(data_frame[$(esc(idx)), :B], n=n-1)[n-1])
7
+ end
8
+
4
9
  function func(idx)
5
- sma_val() = sma(data_frame[idx, :B], n=n-1)[n-1]
6
10
  dfi = @view data_frame[idx, :]
7
11
  ifelse(dfi[2, :C] == "A",
8
- dfi[3, :B] > 0.5 && sma_val() > 0.3 && last(idx),
12
+ dfi[3, :B] > 0.5 && (@sma_val(idx)) > 0.3 && last(idx),
9
- dfi[3, :B] > 0.3 && sma_val() > 0.1 && last(idx))
13
+ dfi[3, :B] > 0.3 && (@sma_val(idx)) > 0.1 && last(idx))
10
14
  end
11
15
 
12
16
  list_folder = filter(x -> !iszero(x), [func(i:i+n-1) for i=1:nrow(data_frame)-n+1])

1

2022/11/13 03:59

投稿

melian
melian

スコア19825

test CHANGED
@@ -1,16 +1,14 @@
1
1
  [Pandas](http://pandas.pydata.org/) の rolling window function の様なモノ。
2
2
  ```julia
3
3
  n = 3 # window size
4
- function funs(dfi)
4
+ function func(idx)
5
- idx = parentindices(dfi)[1]
6
- sma_val = sma(data_frame[idx, :B], n=n-1)[n-1]
5
+ sma_val() = sma(data_frame[idx, :B], n=n-1)[n-1]
7
- return ifelse(
6
+ dfi = @view data_frame[idx, :]
8
- dfi[2, :C] == "A",
7
+ ifelse(dfi[2, :C] == "A",
9
- ifelse(dfi[3, :B] > 0.5 && sma_val > 0.3, last(idx), 0),
8
+ dfi[3, :B] > 0.5 && sma_val() > 0.3 && last(idx),
10
- ifelse(dfi[3, :B] > 0.3 && sma_val > 0.1, last(idx), 0))
9
+ dfi[3, :B] > 0.3 && sma_val() > 0.1 && last(idx))
11
10
  end
12
11
 
13
- list_folder = filter(x -> x > 0,
14
- [funs(@view data_frame[i:i+n-1,:]) for i=1:nrow(data_frame)-n+1])
12
+ list_folder = filter(x -> !iszero(x), [func(i:i+n-1) for i=1:nrow(data_frame)-n+1])
15
13
  println(list_folder)
16
14
  ```