2017-09-26 8 views
-3

Rには非常に新しいです。私のデータには、顧客IDとカテゴリの列があります。顧客IDは数値で、カテゴリーはテキストです。 カスタマーIDはカテゴリAまたはBまたは両方に属します。私の質問:Rの2つの異なるタグを持つ共通データを見つけるにはどうすればよいですか?

  1. カスタマーIDはA/B/Bothのいずれでもかまいません。 Aのみに属し、他の2つのセグメントに属さない顧客IDをフィルタリングするにはどうすればよいですか?
  2. 両方のセグメントで、顧客が最初にAまたはBから購入したことをどのように知ることができますか?

助けてください。

あなたが条件で、あなたのデータフレームをフィルタリングすることができます。データは、あなたの最初の質問に答えるために、この

data.frame 
(date = c("24 aug", "19 Aug", "15 july", "31 aug", "10 Aug", "12 Aug"), 
id = c(1000003007, 1000008006, 1000008006, 1000008006, 1000009009, 1000010004), 
customer = c("A", "B")) 

Sample Data

+0

質問に入力データと希望する出力を追加します。 – Santosh

+0

サンプルデータイメージを追加しました。 – Mreenal

+0

あなたの入力データフレームの 'dput'または' structure'を追加してください。また、希望の出力。 – Santosh

答えて

0

と仮定すると、dfがあなたのデータフレームです。

df <- data.frame(date = c("24 aug", "19 Aug", "15 july", "31 aug", "10 Aug", "12 Aug"), id = c(1000003007, 1000008006, 1000008006, 1000008006, 1000009009, 1000010004), customer = c("A", "B")) 

subsetを使用すると、両方のクエリの結果を得ることができます。

クエリ1:

subset(df, customer == "A") 

    date  id  customer 
1 24 aug 1000003007  A 
3 15 july 1000008006  A 
5 10 Aug 1000009009  A 

あなただけの顧客IDをしたい場合:

subset(df$id, df$customer == "A") 
[1] 1000003007 1000008006 1000009009 

クエリ2:

subset(df, customer == "A" | customer == "B") 

    date   id  customer 
1 24 aug 1000003007  A 
2 19 Aug 1000008006  B 
3 15 july 1000008006  A 
4 31 aug 1000008006  B 
5 10 Aug 1000009009  A 
6 12 Aug 1000010004  B 

あなただけの顧客IDをしたい場合:

subset(df$id, df$customer == "A" | df$customer == "B") 
[1] 1000003007 1000008006 1000008006 1000008006 1000009009 1000010004 
0

のように探しています。

dfという名前のデータフレームオブジェクトを想定しています。具体的には、rowsまたはcolumnsのデータフレームを選択する一般的なコード構造は次のとおりです。

df <- data.frame(date = c("24 aug", "19 Aug", "15 july", "31 aug", "10 Aug", "12 Aug"), 
       customer_id = c(1000003007, 1000008006, 1000008006, 1000008006, 1000009009, 1000010004), 
       Category = c("A", "B")) 

df[rows, columns] 

数値を使用して、データフレーム内の位置によって行と列を呼び出すことができます。

df[1, ] 

    date customer_id Category 
1 24 aug 1000003007  A 

は、最初の行とすべての列を選択します。

df[, 1] 

[1] 24 aug 19 Aug 15 july 31 aug 10 Aug 12 Aug 
Levels: 10 Aug 12 Aug 15 july 19 Aug 24 aug 31 aug 

は、すべての行を選択しますが、最初の列のみを選択します。

df[, "customer_id"] 

[1] 1000003007 1000008006 1000008006 1000008006 1000009009 1000010004 

は、すべての行を選択しますが、唯一の列customer_id:あなたはまた、自分の名前で列を選択することができます。これはdf$customer_idでも行うことができます。

行の条件付き選択を使用するには、コンマの前にスペースに条件を挿入します。

df[df$Category == "A",] 

    date customer_id Category 
1 24 aug 1000003007  A 
3 15 july 1000008006  A 
5 10 Aug 1000009009  A 

すべての列を選択しますが、条件column "Category" is equal to "A"を満たす行のみになります。

データ例にはdf$Category == "Both"の行が含まれていないため、2番目の質問に答えることはできません。

関連する問題