是否可以查看資料框中的變數并根據某些條件洗掉一些行?如果我有桌子:
| 數字 | 價值 |
|---|---|
| 1 | 真的 |
| 1 | 錯誤的 |
| 2 | 錯誤的 |
| 2 | 錯誤的 |
| 3 | 錯誤的 |
| 3 | 真的 |
| 4 | 錯誤的 |
| 4 | 錯誤的 |
| 5 | 真的 |
| 5 | 錯誤的 |
我希望每個數字只有一行,我將洗掉任何一行是假的,如果數字中的兩個值都是假的,那么我將只洗掉其中一行。這應該給我留下桌子
| 數字 | 價值 |
|---|---|
| 1 | 真的 |
| 2 | 錯誤的 |
| 3 | 真的 |
| 4 | 錯誤的 |
| 5 | 真的 |
是否可以按數字過濾然后洗掉第一個假值?或者類似的東西?
uj5u.com熱心網友回復:
你可以arrange然后使用distinct-
library(dplyr)
df %>%
arrange(Number, !Value) %>%
distinct(Number, .keep_all = TRUE)
# Number Value
#1 1 TRUE
#2 2 FALSE
#3 3 TRUE
#4 4 FALSE
#5 5 TRUE
arrange將TRUE值保持在值之前,FALSE然后我們為每個值選擇第一行Number。
另一種選擇是檢查每個組中的情況。
df %>%
group_by(Number) %>%
filter(if(any(Value)) Value else row_number() == 1) %>%
ungroup
uj5u.com熱心網友回復:
另一種方法:
library(dplyr)
df %>% group_by(Number) %>% filter(if(sum(Value == FALSE) == 2) row_number() == 1 else Value == TRUE)
# A tibble: 5 x 2
# Groups: Number [5]
Number Value
<int> <lgl>
1 1 TRUE
2 2 FALSE
3 3 TRUE
4 4 FALSE
5 5 TRUE
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328713.html
標籤:r
