データ行を条件付きで行で比較し、異なる結果を他の列に出力する方法はありますか?条件付きで行をデータ行と比較し、異なる結果を他の列に出力する方法はありますか?
行1のden
行1
dataset
の下
をご覧ください
特定の行のWeight
が行1の重みよりも高いかどうかを最初にチェックすると、行1のhigher
列が1になり、特定の行のVolume
が行1のVolume
よりも1.0、行1の列は1になります。
これらの条件のいずれかが満たされるまで、次の行と次の行の比較を続けます。いずれかの条件が行2で満たされている場合は、いずれかの条件が行3行4、行ごとに移動.....など。
条件のいずれかが満たされ(行1 == 1のhigher
又はlower
列の1つ)、この場合には行3 den==1
次の行に移ります。そしてその後howhigh
列が行1のWeight
場合行1のhigher == 1
と行のWeight
との間の差を記録することである6
行です。 between
列は条件が満たされた行の差異を記録するものです(例:Expected Outcome
、行1のbetween
が行6で満たされたため5であるため)、行3のbetween
は3です。 6そう6 - 3 = 3
)
その後dataset
は、行18からWeight
が高いので、例えばExpected Outcome
からhigher==1
を行14に乗りExpected Outcome
のようなものになるだろう。行14と18のWeight
差が0.0649
あるのでhowhigh
はbetween
はどのように私は、この計算速度を上げるためのベクトル化の方法を達成ん4
18-14=4
ためで、0.0649
のですか? ありがとうございます。
データセット
Weight Volume den higher lower between howhigh
1 5.1626 5.1594 1 0 0 0 0
2 5.1615 5.1559 0 0 0 0 0
3 5.1600 5.1574 1 0 0 0 0
4 5.1593 5.1582 0 0 0 0 0
5 5.1592 5.1572 0 0 0 0 0
6 5.1635 5.1580 1 0 0 0 0
7 5.1608 5.1580 0 0 0 0 0
8 5.1602 4.0565 0 0 0 0 0
9 5.1582 5.1554 0 0 0 0 0
10 5.1563 5.1547 0 0 0 0 0
11 5.1578 5.1550 1 0 0 0 0
12 5.1589 5.1560 0 0 0 0 0
13 5.1578 3.1553 0 0 0 0 0
14 5.1591 5.1554 1 0 0 0 0
15 5.1585 5.1563 0 0 0 0 0
16 5.1572 5.1557 0 0 0 0 0
17 5.1565 5.1520 0 0 0 0 0
18 5.2240 5.1518 0 0 0 0 0
19 5.1540 5.1505 1 0 0 0 0
20 5.1539 5.1488 0 0 0 0 0
21 5.1520 5.1408 0 0 0 0 0
22 5.1450 5.1420 0 0 0 0 0
23 5.1455 5.1420 0 0 0 0 0
24 5.1461 5.1435 0 0 0 0 0
25 5.1470 5.1437 0 0 0 0 0
26 5.1449 5.1378 0 0 0 0 0
27 5.1423 5.1385 0 0 0 0 0
28 6.1429 5.1401 0 0 0 0 0
29 5.1425 5.1399 0 0 0 0 0
30 5.1433 5.1403 1 0 0 0 0
期待される成果
Weight Volume den higher lower between howhigh
1 5.1626 5.1594 1 1 0 5 0.0009
2 5.1615 5.1559 0 0 0 0 0
3 5.1600 5.1574 1 1 0 3 0.0035
4 5.1593 5.1582 0 0 0 0 0
5 5.1592 5.1572 0 0 0 0 0
6 5.1635 5.1580 1 0 1 2 0
7 5.1608 5.1580 0 0 0 0 0
8 5.1602 4.0565 0 0 0 0 0
9 5.1582 5.1554 0 0 0 0 0
10 5.1563 5.1547 0 0 0 0 0
11 5.1578 5.1550 1 0 1 2 0
12 5.1589 5.1560 0 0 0 0 0
13 5.1578 3.1553 0 0 0 0 0
14 5.1591 5.1554 1 1 0 4 0.0649
15 5.1585 5.1563 0 0 0 0 0
16 5.1572 5.1557 0 0 0 0 0
17 5.1565 5.1520 0 0 0 0 0
18 5.2240 5.1518 0 0 0 0 0
19 5.1540 5.1505 1 1 0 9 0.9889
20 5.1539 5.1488 0 0 0 0 0
21 5.1520 5.1408 0 0 0 0 0
22 5.1450 5.1420 0 0 0 0 0
23 5.1455 5.1420 0 0 0 0 0
24 5.1461 5.1435 0 0 0 0 0
25 5.1470 5.1437 0 0 0 0 0
26 5.1449 5.1378 0 0 0 0 0
27 5.1423 5.1385 0 0 0 0 0
28 6.1429 5.1401 0 0 0 0 0
29 5.1425 5.1399 0 0 0 0 0
30 5.1433 5.1403 1 0 0 0 0
感謝。スピード賢明、私のループより速いです。しかし、外出は異なっている。 'higher'がすでに' 1'であれば、 'lower'をスキップします。 'lower'が1の場合、' higher'をスキップします。 「高」と「低」の列には「1」が1つしかない。あなたの結果、行6では、 'lower'が1で' higher'の条件が満たされる前に 'higher'カラムが0になるはずです。 – theman
それは奇妙です...私は私のコードを実行すると正しく動作し、#6は1つしか満たされていませんが、私は何とかいっぱいの結果を貼り付けたようです...コードを実行しようとしましたか?スレッドで私の(間違った)出力を見ているだけですか? –
私のコードが書かれている方法は、1に等しいかそれ以上の両方になることはできません。私はどこかでタイプミスをしているに違いありません... –