我的資料如下:
group observation
A red
A blue
A green
B red
B red
B green
C blue
C red
C green
我想對每個觀察至少有一個的組進行子集化。我想要的輸出如下:
group observation
A red
A blue
A green
C blue
C red
C green
uj5u.com熱心網友回復:
我們可以按“組”列分組,檢查整個資料中的“觀察”元素是否是all分組行中的“觀察”到那些“組”unique%in%filter
library(dplyr)
df1 %>%
group_by(group) %>%
filter(all(unique(df1$observation) %in% observation)) %>%
ungroup
-輸出
# A tibble: 6 × 2
group observation
<chr> <chr>
1 A red
2 A blue
3 A green
4 C blue
5 C red
6 C green
資料
df1 <- structure(list(group = c("A", "A", "A", "B", "B", "B", "C", "C",
"C"), observation = c("red", "blue", "green", "red", "red", "green",
"blue", "red", "green")), class = "data.frame", row.names = c(NA,
-9L))
uj5u.com熱心網友回復:
這是base r中的一個解決方案:
df1[with(df1, ave(observation, group,
FUN = function(x) length(unique(x))) >= length(unique(observation))),]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526997.html
標籤:r数据框子集
