良いタイトルが出てこなかったので、私が何をしているのかを次のように説明してください。 dtRandomのすべての行について、dtFamiliesの行がmaxとminの猫と犬の基準にどれくらい一致しているかを知りたい。私はdtFamiliesで最大と最小の犬や猫の条件に一致する行数を知りたいdtRandomのすべての行についてはRデータのdata.tableとランダムな値のdata.tableの一致を見つける
require(data.table)
dtFamilies <- data.table(Family=c('Smith','Jones','White','Harris'),
Dogs=c(7,0,2,1),
Cats=c(0,3,0,8))
lowDogs <- min(DT[,Dogs])
highDogs <- max(DT[,Dogs])
lowCats <- min(DT[,Cats])
highCats <- max(DT[,Cats])
set.seed(1)
DogsMin <- sample(lowDogs:highDogs,10,replace = T)
DogsMax <- sample(lowDogs:highDogs,10,replace = T)
CatsMin <- sample(lowCats:highCats,10,replace = T)
CatsMax <- sample(lowCats:highCats,10,replace = T)
dtRandom <- data.table(DogsMin,DogsMax,
CatsMin,CatsMax)
dtRandom <- transform(dtRandom,
DogsMin = ifelse(DogsMin < DogsMax, DogsMin, DogsMax), DogsMax = ifelse(DogsMax > DogsMin, DogsMax, DogsMin),
CatsMin = ifelse(CatsMin < CatsMax, CatsMin, CatsMax), CatsMax = ifelse(CatsMax > CatsMin, CatsMax, CatsMin))
# I now have dtFamilies which is a list of families and the number of dogs and cats that they have.
# I also have dtRandom which has 10 rows of random values for min and max number of pets
# Below obviously does not work
nrow(DT[Dogs >= DogsMin & Dogs <= DogsMax &
Cats >= CatsMin & Cats <= CatsMax]))
。
私はRが新しく、多くの機能があります。適用方法はわかりません。いくつかの指針は非常に高く評価されます。私はループを使って機能する機能を持っていますが、私はループがRで悪く、Rメソッドが使用されるべきであると読んでいます。
私が何をしたいの例(単なる例 - これは、上記のデータと一致していません):私はdtFamiliesで最大の条件に一致する行数を知りたいdtRandomのすべての行については
DogsMin DogsMax CatsMin CatsMax Matches
1: 0 5 3 6 1
2: 6 6 2 3 0
3: 1 7 2 7 2
4: 1 4 4 6 1
5: 6 6 0 7 3
6: 5 6 4 4 0
7: 2 5 4 8 4
8: 2 3 2 4 0
9: 1 5 3 4 1
10: 0 4 1 5 1
コードに表示されない 'dtFamilies'テーブルがあります。サンプルを完全に再現性のあるものにするために、それを追加することをお勧めします。 – Frank
私はあなたが 'DT [dtRandom、on =。(Dogs> = DogsMin、Dogs <= DogsMax、Cats> = CatsMin、Cats <= CatsMax)、.N、by = .EACHI]'を探していると推測しています。しかし..? – Frank
@フランク - ありがとう。私は私の質問を更新しました。 – speedycorndog