是否可以保留和過濾行內的重復項?
這是虛擬資料:
a <- data.frame(c('a1', 'a1', 'a1', 'a2', 'a3', 'a3'),
c(1, 2, 3, 1, 2, 3),
stringsAsFactors = FALSE)
a
colnames(a) <- c('id', 'number')
a
# id number
# 1 a1 1
# 2 a1 2
# 3 a1 3
# 4 a2 1
# 5 a3 2
# 6 a3 3
#'Expected Result
# id number
# 1 a1 1
# 2 a1 2
# 3 a1 3
# 5 a3 2
# 6 a3 3
如您所見,未重復的行已從“id”變數中洗掉。
我們可以調整過濾嗎?例如:在“id”變數中保留并過濾 3 個或更多重復項。
它可以實作嗎?dplyr方法會有所幫助。
謝謝你。
uj5u.com熱心網友回復:
subset(a, duplicated(id)|duplicated(id, fromLast = TRUE))
id number
1 a1 1
2 a1 2
3 a1 3
5 a3 2
6 a3 3
如果您正在使用filter:
filter(a, duplicated(id)|duplicated(id, fromLast = TRUE))
甚至:
a %>%
group_by(id) %>%
filter(n() > 1)
uj5u.com熱心網友回復:
by(a, a$id, \(x) if (nrow(x) > 1) x) |>
do.call(what = rbind) |>
'rownames<-'(NULL)
#> id number
#> 1 a1 1
#> 2 a1 2
#> 3 a1 3
#> 4 a3 2
#> 5 a3 3
由reprex 包于 2022-01-06 創建(v2.0.1)
uj5u.com熱心網友回復:
dplyr add_count filter 選項也是如此。
a %>%
add_count(id) %>% #add new column that has the frequency counts. Non duplicate will have n=1
filter(n>1) %>% # remove non duplicates
select(-n) #remove the intemediate column
id number
1 a1 1
2 a1 2
3 a1 3
4 a3 2
5 a3 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404942.html
標籤:
上一篇:R:將兩個系列添加到圖形中
