如何获得具有特定条件的行?

时间:2019-11-26 15:00:28

标签: r dplyr

我有一个数据集,如下所示:

data <- tribble(
  ~cat_id,   ~clicks,     ~price,
  "1",         NA,           1.2,
  "1",         T,           1.4,         
  "1",         F,           2.2,
  "2",         F,           2.2, 
  "2",         T,           1.5,
  "2",        NA,           1.6,
  "3",         T,           1.7,
  "3",         F,           1.9,
  "4",         F,           1.4,
)

但是现在,如果“ click”仅具有“ F”值,我想获取行。我想要的数据是这样的:

desired_data <- tribble(
  ~cat_id,   ~clicks,     ~price,
  "4",         F,           1.4,
)

要获得它,我编写了这样的代码,但效果不佳:

data %>% 
  filter(clicks == "F" & clicks != "T" & clicks != "NA")

你知道我在做什么错吗?

先谢谢了。

3 个答案:

答案 0 :(得分:2)

使用showSlides(slideIndex); showSlides1(slideIndex) ,您可以使用计数来计算每个dplyr的级别数,然后过滤cat_idclicks -- F的行。

n == 1

答案 1 :(得分:2)

@ dc37在编辑方面领先于我

您的回答被否决了,因为人们不理解您的措辞。我猜您的意思是某些行无效,因为它们具有相同ID的T或NA。

data  %>% group_by(., cat_id)%>% filter(., all(clicks == F))

答案 2 :(得分:2)

这是您要找的吗?

data %>%
  group_by(cat_id) %>%
  filter(!any(clicks)) %>% 
  ungroup()

编辑:如果点击是一个因素

data <- tribble(
  ~cat_id,   ~clicks,     ~price,
  "1",         NA,           1.2,
  "1",         T,           1.4,         
  "1",         F,           2.2,
  "2",         F,           2.2, 
  "2",         T,           1.5,
  "2",        NA,           1.6,
  "3",         T,           1.7,
  "3",         F,           1.9,
  "4",         F,           1.4,
)

data$clicks <- factor(data$clicks, labels = c("F", "T"))

data %>%
  group_by(cat_id) %>%
  filter(all(clicks == "F")) %>% 
  ungroup()