私はこのような文字ベクトルを持っています
Categories = sample(make.unique(rep(letters, length.out = 5), sep=''))
Categories
[1] "d-" "e-" "c-" "a-" "b-"
次のようなデータフレームdfがあります。
df = data.frame(name = c(1:10), cat = paste(c(letters[1:10]), "-1", sep = ""))
df
name cat
1 1 a-1
2 2 b-1
3 3 c-1
4 4 d-1
5 5 e-1
6 6 f-1
7 7 g-1
8 8 h-1
9 9 i-1
10 10 j-1
カテゴリの要素がdfの「cat」列に含まれている順序でdfの行番号を取得したいと思います。だから、私は取得したい
dfRowNumbers
[1] 4,5,3,1,2
どうすればそれを取得できますか?
最も直接的には、を使用できますcharmatch
。
charmatch(vec, df$cat)
[1] 4 5 3 1 2
またはで命名ベクトルを返すgrep
とsapply
。
sapply(Categories, grep, df$cat, fixed=TRUE)
d- e- c- a- b-
4 5 3 1 2
セマンティックシュガーを少し使用するには、次のコマンドを使用して独自の関数を作成しますVectorize
。
vecGrep <- Vectorize(grep, vectorize.args="pattern")
次に、それを使用して名前付きベクトルを返します
vecGrep(Categories, df$cat, fixed=TRUE)
d- e- c- a- b-
4 5 3 1 2
データ
vec <- c("d-", "e-", "c-", "a-", "b-")
df = data.frame(name = c(1:10), cat = paste(c(letters[1:10]), "-1", sep = ""))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加