对R来说很新。我的数据包含客户ID和类别列。客户ID是数字,类别是文本。 客户ID可以属于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"))
答案 0 :(得分:0)
回答你的第一个问题:
您可以根据条件过滤数据框。 R中用于选择数据帧的特定rows
或columns
的通用代码结构如下:
假设您的数据框对象被称为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"
行。
答案 1 :(得分: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