非常に新しくR 多数の列を持つ非常に大きなデータフレーム(効率のためにループを使用しないようにする)があります。私は文字のベクトル(ex c( '9515'、 '8231'))に対して複数の列(ex ss1:ss15)をスキャンしたいと思う。これらのいずれかが真であるか一致している場合は、その行のいずれかが真であれば値1、そうでなければ0でデータフレームに新しい列を取得しようとしています。私は、単一のlogical
に論理vector
秒のlist
をINGの私たちは、Reduce
、その後、データセットをサブセット化によって、関心の列をループすることで、grep
を使用するか...複数の列で複数の値を検索する
1
A
答えて
0
も、このついて行く開始する方法についてこだわっています続いて、サブストリングベクトルと検索対象の「VECT」要素が固定されている場合as.integer
cols <- paste0('ss', 1:15)
vect <- c(‘9515’,’8231’)
as.integer(Reduce('|', lapply(df1[cols], grepl, pattern = paste(vect, collapse="|"))))
のバイナリに変換するとしない、我々はまた、%in%
as.integer(Reduce('|', lapply(df1[cols], '%in%', vect)))
0
代替magrittr
とdata.tablesを用いて中間行列を操作することを可能にする:
library ("magrittr")
vect = c ("9515", "8231")
# Creating the data table
N <- 150
dt1 <- matrix (
sample (c (vect, "other"), N, prob = c (.05, .05, .9), replace = TRUE),
ncol = 15, dimnames = list (NULL, paste0 ("ss", 1:15))) %>% as.data.table
# Initiatilzing the new column
dt1 [, NewCol := rep (0, N/15)]
# Define query function
InVect <- function (x) x %in% vect
# Querying the data table
dt1 [(apply (dt1, 1:2, InVect) %>% which (arr.ind = TRUE))[, 1 ] %>%
unique, NewCol := 1 ]
dt1
を、その代わりにvect
をループ別の方法(いくつかの状況で長所を有していてもよい)
# Initiatilzing the new column
dt1 [, NewCol := rep (0, N/15)]
# Define query function
RowIDs <- function (x) (which (dt1 == x, arr.ind = TRUE))[, 1 ]
# querying the data table
dt1 [ lapply (vect, RowIDs) %>% unlist %>% unique, NewCol := 1 ]
関連する問題
- 1. 複数の値で複数の列を検索するSQL
- 2. 複数の「数式」列の検索値
- 3. 複数の列で複数の文字列を検索する
- 4. 複数の値検索
- 5. 複数の列で検索する
- 6. DataGridView複数列の検索
- 7. 複数の値を検索する -
- 8. 検索複数の配列の値と、検索結果
- 9. MySQLの列で複数の値を検索する
- 10. 複数の項目を複数の列で検索
- 11. 複数の値をExcelで検索
- 12. 複数の列でのMySQLの検索
- 13. 複数の列から列を検索
- 14. 複数列でのSQLの検索
- 15. 複数の列でのC#検索
- 16. 複数値の多次元配列で検索する
- 17. 複数の値を1つの列で検索
- 18. 複数のファイルを複数の単語で検索する
- 19. 複数の単語を複数のモデルで検索する
- 20. 複数の検索語の複数の列
- 21. 複数のファイルを複数の文字列で検索する方法
- 22. Linq to SQL検索複数の列と複数の単語
- 23. MVC 5複数の列を検索
- 24. 複数のデータベースで検索
- 25. 複数の列で検索用語を検索
- 26. redisキー/値内で複数の値を検索する
- 27. 角度検索複数の入力値
- 28. エラスティックの文字列配列で複数の値を検索する
- 29. Excel:複数列の検索とカウント
- 30. 検索複数の文字列が
'as.integer(Reduce( '|'、lapply(df1 [cols]、grepl、pattern = paste(vect、collapse =" | "))))'または固定マッチの場合 'as.integer(Reduce '|'、lapply(df1 [cols]、 '%in%'、vect))) ' – akrun
すごい、あなたは私にそんなに心苦しい苦労を救ったあなた、ありがとう – Ophelie