假設資料看起來像這樣
A <- c("name1", "name2", "name3", "name1", "name1", "name4")
B <- c(10, 8, 7, 3, -1, -2)
C <- c(8, 3, -1, -10, -2, -2)
df <- data.frame(A, B, C)
df
A B C
1 name1 10 8
2 name2 8 3
3 name3 7 -1
4 name1 3 -10
5 name1 -1 -2
6 name6 -2 -2
現在必須有一種聰明的方法來“收集”只有第一列 (A) 具有三倍值的行到一個新的資料幀中。因此,對于這個特定的示例,所有行都具有“name1”,因為它重復了三次。如果資料集非常大,如何執行此操作,如何檢測并保留具有三重(或任何其他任意數量)值的行?
uj5u.com熱心網友回復:
dplyr
df %>%
group_by(A) %>%
filter(n() == 3)
堿基R
df[A %in% names(which(table(df$A) == 3)),]
輸出
A B C
1 name1 10 8
2 name1 3 -10
3 name1 -1 -2
uj5u.com熱心網友回復:
dplyr 方法略有不同:
df %>%
add_count(A, name = "A_count")%>%
filter(A_count == 3) %>%
select(-A_count)
在 A 中添加變數的計數,命名該計數(否則該列將命名為 n)然后過濾,使用 select - 洗掉該列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/420929.html
標籤:
