我有
a <- c(rep("A", 3), rep("B", 3), rep("C",2), rep("D", 1))
b <- c(1,1,2,4,1,1,2,2,5)
df <-data.frame(a,b)
基于df$a,我只想回傳沒有重復的值(那些只出現一次的行df$a),在這個例子中它是1 D 5
我曾嘗試duplicate(),!duplicate()并unique()但沒有產出什么,我需要。
uj5u.com熱心網友回復:
最干凈的方式dplyr:
library(dplyr)
df %>% group_by(a) %>%
filter(n() == 1)
輸出:
# A tibble: 1 x 2
# Groups: a [1]
a b
<chr> <dbl>
1 D 5
uj5u.com熱心網友回復:
一種選擇
df[!(df$a %in% df$a[duplicated(df$a)]),]
a b
9 D 5
uj5u.com熱心網友回復:
使用 data.table
library(data.table)
setDT(df)
df[, tmp:= .N, by = a][tmp == 1, -"tmp"]
a b
1: D 5
uj5u.com熱心網友回復:
與Base R,
x <- table(df[,1])
df[rep(x<2,x),]
給,
# a b
# 9 D 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/390451.html
