次のようなdfがあります。
data
names fruit
7 john apple
13 john orange
14 john apple
2 mary orange
5 mary apple
8 mary orange
10 mary apple
12 mary apple
1 tom apple
6 tom apple
やりたいことは2つ。最初に、リンゴとオレンジの両方を持つ一意の観測値の数を数えます (つまり、2 つのメアリーとジョン)。
その後、データ フレームからそれらを削除して、リンゴのみを取得した一意の個人のみが残るようにします。
これは私が試したものです
toremove<-unique(data[data$fruit=='apple' & data$fruit=='orange',"names"]) ##this part doesn't work, if it had I would have used the below code to remove the names identified
data2<-data[!data$names %in% toremove,]
実際のデータはフルーツよりも少し複雑なので、grepl を使いたかったのです。これは私が試したことです(最初にdata.tableに変換されました)
data1<-data.table(data1)
z<-data1[,ind := grepl('app.*? & orang.*?', fruit), by='names'] ## this works fine when i just use 'app.*?' but collapses when I try to add the & sign, so I'm making an error with the operator. In addition the by='names' doesn't work out for me, which is important. My plan here was to create an indicator (if an individual has an apple and an orange, then they get an indicator==1 and I would then filter them out on the basis of this indicator).
つまり、要約すると、私の問題は、リンゴとオレンジの両方を持っている人を特定することです。これはとても簡単に思えるので、このことを教えてくれるリソースを教えてください。
希望の出力
names fruit
1 tom apple
6 tom apple