6

私は R に非常に慣れていませんが、プログラマーではありませんがアクセスしやすいと思うので、R を使用することをお勧めします。次の問題を回避しようとしています: 値の変化が列に何回署名しているかをカウントし、結果をパスで並べ替える必要があります (テーブルの例は以下のとおりです-パスは要因です)。最終的にデータを取得したら、データを並べ替える方法を理解できますが、+ 記号が - になり、 - 記号が + 1 になる回数のカウントをまだ把握していません。なにか提案を?

Test <- structure(list(Path = c(1L, 1L, 1L, 2L, 2L, 2L), Direction = c(-3.84089, 
-1.12258, 1.47411, -1.47329, 5.4525, 10.161)), .Names = c("Path", 
"Direction"), class = "data.frame", row.names = c(NA, -6L))
head(Test)
#>   Path    Direction
#> 1    1     -3.84089
#> 2    1     -1.12258
#> 3    1      1.47411
#> 4    2     -1.47329
#> 5    2      5.4525
#> 6    2     10.161
4

2 に答える 2

2

これは、Justin が提案するようsignに、 andを使用する 1 つのアプローチです。rle

length(rle(sign(Test$Direction))[[1]])

編集
最初は誤解していたかもしれません。多分これはあなたが望むものに近いです:

vals <- tail(rle(sign(Test$Direction))[[-1]], -1)
sum(vals > 0) # neg to pos
sum(vals < 0) # pos to neg
于 2013-06-20T18:21:14.430 に答える