2017-09-26 18 views
-3

R對我來說很新穎。我的數據包含客戶ID和類別的列。客戶ID是數字,類別是文本。 客戶ID可以屬於類別A或B或兩者。我的查詢:如何在R中使用2個不同的標籤找到公共數據?

  1. 客戶ID可以是A/B/Both。我如何過濾僅屬於A的客戶ID而不是其他2個分段?
  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

要回答你的第一個問題:

你可以用條件過濾您的數據幀。 R中選擇特定的rowscolumns的通用代碼結構是這樣的:

假設你的數據幀對象被稱爲df

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"的行。

相關問題