Rでgrepまたはstringrと組み合わせてwhich関数を使用するにはどうすればよいですか?

イヴ

この質問は、ここでの私の前の質問の回答に基づいています

私は実際にこのデータフレームを持っています:

   activity_type     leg_mode route_distance
1           home  access_walk      239.83275
2 pt interaction           pt    15802.78756
3 pt interaction transit_walk       71.92245
4 pt interaction           pt     2958.24598
5 pt interaction transit_walk        0.00000
6 pt interaction           pt     9555.56836

私の関数はベクトルベースで機能するので、列を貼り付けて、情報を失わないように次のdfを使用します。

     activity_type__leg_mode__route_distance
1             home@[email protected]
2            pt interaction@[email protected]
3  pt interaction@[email protected]
4            pt interaction@[email protected]
5                 pt interaction@transit_walk@0
6            pt interaction@[email protected]

このコード行を新しいdfに適用しようとしています。

r = rle(df$activity_type)
ix = c(
  which(head(r$values, -1) == "pt interaction" & tail(r$values, -1) == "outside"), # p before o
  which(head(r$values, -1) == "outside" & tail(r$values, -1) == "pt interaction") + 1) # o before p

したがって、新しいdfにはpt interactionorだけoutsideでなく、他の文字が続くため、柔軟性が必要になりますただし、文字列の先頭のみをチェックする必要があります。grep以上を使用することを考えていましたが、これをうまく行う方法がわかりません。

私は主にこの条件をより柔軟にする方法を見つけたいwhich(head(r$values, -1) == "pt interaction" & tail(r$values, -1) == "outside")、それがために見てはいけない、つまり"pt interaction"けどために"pt interaction<some varying, but irrelevant stuff>"

ここにあなたが試すためのいくつかのデータがあります

c("home@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@transit_walk@0", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "outside@outside@0", 
"outside@[email protected]", "outside@[email protected]", 
"pt interaction@[email protected]", "pt interaction@transit_walk@0", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"home@[email protected]", "leisure@[email protected]", 
"other@[email protected]", "leisure@[email protected]", 
"leisure@[email protected]", "other@[email protected]", 
"leisure@[email protected]", "other@[email protected]", 
"leisure@[email protected]", "home@[email protected]", 
"adpt interaction@adpt@NaN", "leisure@[email protected]", 
"adpt interaction@[email protected]", "home@adpt@NaN", "@[email protected]", 
"home@@NA", "outside@transit_walk@0", "outside@[email protected]", 
"outside@[email protected]", "outside@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"outside@outside@0", "outside@[email protected]", 
"outside@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@transit_walk@0", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "outside@@NA", 
"outside@[email protected]", "leisure@[email protected]", 
"work@[email protected]", "outside@@NA", "outside@[email protected]", 
"outside@[email protected]", "outside@[email protected]", 
"leisure@[email protected]", "outside@@NA", "outside@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"outside@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"work@[email protected]", "outside@@NA", "outside@[email protected]", 
"other@[email protected]", "outside@@NA", "outside@[email protected]", 
"pt interaction@[email protected]", "pt interaction@transit_walk@0", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"outside@[email protected]", "pt interaction@[email protected]", 
"pt interaction@transit_walk@0", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "work@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"outside@@NA", "outside@[email protected]", "pt interaction@[email protected]", 
"pt interaction@transit_walk@0", "pt interaction@[email protected]", 
"pt interaction@[email protected]", "outside@[email protected]", 
"pt interaction@[email protected]", "pt interaction@[email protected]", 
"pt interaction@[email protected]")
ポール・ヴァン・オッペン

これは力ずくのアプローチです。activity_typeusingのすべての値のペアを作成しますexpand.grid次に、を使用applyしてこれらすべてのペアを実行し、を使用して変更検出コードを適用しますrleこれにより、すべての変更点のリストが表示されます。その後、必要に応じて整理できます。

r = rle(data$activity_type)
combinations <- expand.grid(unique(r$values), unique(r$values))
names(combinations) <- c("first", "second")
combinations <- combinations %>% 
  mutate_if(is.factor, as.character) %>%
  mutate(labels = paste0(first, " <-> ",  second))

ix_list <- apply(combinations, 1, function(x) c(
  which(head(r$values, -1) == x[1] & tail(r$values, -1) == x[2]), # first before last
  which(head(r$values, -1) == x[2] & tail(r$values, -1) == x[1]) + 1)) # last before first
names(ix_list) <-combinations$labels
# remove empty list elements
ix_list <- Filter(length, ix_list)

この結果で:

> glimpse(ix_list)
List of 26
 $ pt interaction <-> home     : num [1:2] 4 2
 $ outside <-> home            : num 20
 $ leisure <-> home            : num [1:2] 12 6
 $ adpt interaction <-> home   : num [1:2] 16 14
 $  <-> home                   : num [1:2] 18 18
 $ home <-> pt interaction     : num [1:2] 1 5
 $ outside <-> pt interaction  : num [1:16] 3 20 22 29 31 36 38 42 44 3 ...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

LAG関数をWHERE句と組み合わせて使用するにはどうすればよいですか?

分類Dev

lubridateas_datetime関数をdplyrmutateおよびcase_when関数と組み合わせて使用するにはどうすればよいですか?

分類Dev

R関数の引数を組み合わせるにはどうすればよいですか

分類Dev

再帰関数を別の引数と組み合わせるにはどうすればよいですか

分類Dev

rand関数とsplit関数を使用して特定の3要素の組み合わせを回避するにはどうすればよいですか?

分類Dev

固定の月日をSQL年関数と組み合わせるにはどうすればよいですか?

分類Dev

PLPGSQLでWITHをFORループと組み合わせて使用するにはどうすればよいですか?

分類Dev

CTEと関数を組み合わせて、再帰的に使用するにはどうすればよいですか?

分類Dev

promiseと静的コールバックを組み合わせてRamdaPipe関数を使用するにはどうすればよいですか?

分類Dev

INNERJOINをGROUPBY句と組み合わせて使用するにはどうすればよいですか?

分類Dev

「repeat()」css関数をAngular ngStyleディレクティブと組み合わせて使用するにはどうすればよいですか?

分類Dev

DataFrame(パンダ)のインデックスとして組み合わせまたは文字列を使用するにはどうすればよいですか?

分類Dev

2つの関数を組み合わせて、javascriptとhtml5で希望どおりに機能させるにはどうすればよいですか?

分類Dev

dplyrsummaryでさまざまな入力変数とさまざまな関数を組み合わせるにはどうすればよいですか

分類Dev

Pythonで2つの印刷関数を組み合わせるにはどうすればよいですか?

分類Dev

PostgreSQL関数で2つのselectを組み合わせるにはどうすればよいですか?

分類Dev

rbindとlapplyを組み合わせた関数を高速化するにはどうすればよいですか?

分類Dev

itertoolsの組み合わせ関数を使用してリストのリストを作成するにはどうすればよいですか?

分類Dev

grepとsedを組み合わせるときに変数名を使用するにはどうすればよいですか?

分類Dev

grepを複数の引数と異なる出力スイッチと組み合わせるにはどうすればよいですか?

分類Dev

上位n行を要約関数とRの残りの行を組み合わせるにはどうすればよいですか?

分類Dev

Laravelと複数のテーブルを組み合わせるにはどうすればよいですか?

分類Dev

T-SQLを使用して、長さが異なる複数の親子関係を組み合わせるにはどうすればよいですか?

分類Dev

grepを使用してファイルで文字列の組み合わせを検索するにはどうすればよいですか?

分類Dev

Elixirを使用してCSS以下を組み合わせるにはどうすればよいですか?

分類Dev

Rを使用したforループで、「paste」コマンドと「ifelse」コマンドを組み合わせるにはどうすればよいですか。

分類Dev

Rで変数のいくつかのペアを組み合わせるための分割表を作成するにはどうすればよいですか?

分類Dev

これらのAJAX関数とjQuery関数を正しく組み合わせるにはどうすればよいですか?

分類Dev

Excelでネストされた複数の置換関数を組み合わせるにはどうすればよいですか?

Related 関連記事

  1. 1

    LAG関数をWHERE句と組み合わせて使用するにはどうすればよいですか?

  2. 2

    lubridateas_datetime関数をdplyrmutateおよびcase_when関数と組み合わせて使用するにはどうすればよいですか?

  3. 3

    R関数の引数を組み合わせるにはどうすればよいですか

  4. 4

    再帰関数を別の引数と組み合わせるにはどうすればよいですか

  5. 5

    rand関数とsplit関数を使用して特定の3要素の組み合わせを回避するにはどうすればよいですか?

  6. 6

    固定の月日をSQL年関数と組み合わせるにはどうすればよいですか?

  7. 7

    PLPGSQLでWITHをFORループと組み合わせて使用するにはどうすればよいですか?

  8. 8

    CTEと関数を組み合わせて、再帰的に使用するにはどうすればよいですか?

  9. 9

    promiseと静的コールバックを組み合わせてRamdaPipe関数を使用するにはどうすればよいですか?

  10. 10

    INNERJOINをGROUPBY句と組み合わせて使用するにはどうすればよいですか?

  11. 11

    「repeat()」css関数をAngular ngStyleディレクティブと組み合わせて使用するにはどうすればよいですか?

  12. 12

    DataFrame(パンダ)のインデックスとして組み合わせまたは文字列を使用するにはどうすればよいですか?

  13. 13

    2つの関数を組み合わせて、javascriptとhtml5で希望どおりに機能させるにはどうすればよいですか?

  14. 14

    dplyrsummaryでさまざまな入力変数とさまざまな関数を組み合わせるにはどうすればよいですか

  15. 15

    Pythonで2つの印刷関数を組み合わせるにはどうすればよいですか?

  16. 16

    PostgreSQL関数で2つのselectを組み合わせるにはどうすればよいですか?

  17. 17

    rbindとlapplyを組み合わせた関数を高速化するにはどうすればよいですか?

  18. 18

    itertoolsの組み合わせ関数を使用してリストのリストを作成するにはどうすればよいですか?

  19. 19

    grepとsedを組み合わせるときに変数名を使用するにはどうすればよいですか?

  20. 20

    grepを複数の引数と異なる出力スイッチと組み合わせるにはどうすればよいですか?

  21. 21

    上位n行を要約関数とRの残りの行を組み合わせるにはどうすればよいですか?

  22. 22

    Laravelと複数のテーブルを組み合わせるにはどうすればよいですか?

  23. 23

    T-SQLを使用して、長さが異なる複数の親子関係を組み合わせるにはどうすればよいですか?

  24. 24

    grepを使用してファイルで文字列の組み合わせを検索するにはどうすればよいですか?

  25. 25

    Elixirを使用してCSS以下を組み合わせるにはどうすればよいですか?

  26. 26

    Rを使用したforループで、「paste」コマンドと「ifelse」コマンドを組み合わせるにはどうすればよいですか。

  27. 27

    Rで変数のいくつかのペアを組み合わせるための分割表を作成するにはどうすればよいですか?

  28. 28

    これらのAJAX関数とjQuery関数を正しく組み合わせるにはどうすればよいですか?

  29. 29

    Excelでネストされた複数の置換関数を組み合わせるにはどうすればよいですか?

ホットタグ

アーカイブ