首页 > 解决方案 > 按条件在 R 中打印组

问题描述

说,我有数据

data=structure(list(x1 = structure(c(1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L), .Label = c("q", 
"r", "w"), class = "factor"), x2 = structure(c(2L, 2L, 2L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), .Label = c("e", "w"), class = "factor"), x3 = structure(c(1L, 
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 
2L, 2L, 2L), .Label = c("e", "q", "r"), class = "factor"), var = c(34L, 
35L, 34L, 34L, 34L, 34L, 35L, 34L, 34L, 34L, 34L, 35L, 34L, 34L, 
34L, 34L, 34L, 34L, 34L, 34L), act = c(1L, 1L, 1L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("x1", 
"x2", "x3", "var", "act"), class = "data.frame", row.names = c(NA, 
-20L))

按列x1, x2,x3我们有三组

q   w   e
w   e   r
r   e   q

我必须只打印那些act列只有 1 个值的组。在这种情况下,只有w e r组按列具有 0 和 1 值,而act另一个组按列只有 1 ,所以我需要打印它。 怎么做?q w er e qact

预期产出

x1  x2  x3
q   w   e
r   e   q

标签: rdataframedplyrdata.table

解决方案


library(dplyr)
data %>% distinct(x1,x2,x3, .keep_all = TRUE) %>% 
         filter(act==1) %>% select(-var,-act)

  x1 x2 x3
1  q  w  e
2  r  e  q

data %>% distinct(x1,x2,x3, .keep_all = TRUE) %>% 
         filter(act==1) %>% select(-var,-act) %>%
         filter(x1=='r',x2=='e',x3=='q')

  x1 x2 x3
1  r  e  q


#OR 
data %>% filter(x1=='r',x2=='e',x3=='q')

推荐阅读