假設我們有一個資料框:
Event <- c("A", "A", "A", "B", "B", "C" , "C", "C")
Model <- c( 1, 2, 3, 1, 2, 1, 2, 3)
df <- data.frame(Event, Model)
print (df)
看起來像這樣:
| 事件 | 模型 |
|---|---|
| 一種 | 1 |
| 一種 | 2 |
| 一種 | 3 |
| 乙 | 1 |
| 乙 | 2 |
| C | 1 |
| C | 2 |
| C | 3 |
我們可以看到事件 B 只有 2 個模型的資料。由于我使用的實際資料框有數千行和 17 列,我怎樣才能洗掉沒有 3 個模型的所有事件?我的猜測是使用一個子集,但是當我們有多個條件時,我不確定該怎么做。
我試過:
filtered_df = subset(df, Event & Model = "1", Event & Model = "2", Event & Model = "3")
然而,沒有喜悅。
非常感謝。
uj5u.com熱心網友回復:
使用dplyr,
df %>% group_by(Event) %>%
filter(max(Model)==3)
結果是
# A tibble: 6 × 2
# Groups: Event [2]
Event Model
<chr> <dbl>
1 A 1
2 A 2
3 A 3
4 C 1
5 C 2
6 C 3
或使用data.table,
df[df[, .I[max(Model)==3],by=Event]$V1]
結果與下面相同。
Event Model
1: A 1
2: A 2
3: A 3
4: C 1
5: C 2
6: C 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460963.html
