[英]Deleting rows dataframe in R conditional to “if any of (a specific variable) is equal to”
我已經為此代碼苦苦掙扎了一段時間……我從一個數據幀(溜冰鞋)中提取了唯一ID為“ EID”的矢量,其長度為821。 看起來像這樣:
> head(skate$EID)
[1] "896-19" "895-8" "899-1" "899-5" "899-8" "895-7"
如果任何t5 $ EID等於(重復)skate $ EID,我想刪除另一個數據幀(t5)中的完整行。
我能夠在t5的所有匹配EID中獲得“重復的”數據幀,如下所示:
> xx<-skate$EID
> t5[match(xx,t5[,26]), ]#gives me a dataframe of all matching EID in skate$EID
record.t trip set month stratum NAFO unit.area time dur.set distance
8948 5 896 19 11 221 2J N12 908 15 8
8849 5 895 8 10 766 3O R36 1650 16 8
9289 5 899 1 12 743 3L V26 2052 15 8
9299 5 899 5 12 746 3L W27 1129 14 7
其中t5 [,26]對應於t5 $ EID列。 我敢肯定這很簡單,但是我不確定現在如何從t5數據框中刪除所有這些! 提示將不勝感激! 謝謝!
有很多方法可以做到這一點。 要測試矢量A中不在矢量B中的元素,可以使用!
的組合!
,R的邏輯否定運算符(請參閱?"!"
)和%in%
(請參閱?%in%
)。 然后,您可以使用該測試的結果來指示要保留的行。
# Create two example data.frames
skate <- data.frame(EID = c("896-19", "895-8", "899-1", "899-5"),
score = 1:4)
t5 <- data.frame(EID = c("896-19", "camel", "899-1", "goat", "899-1"),
score = 105:101)
# Method 1
t5[!t5$EID %in% skate$EID, ]
# Method 2 (using the very handy subset() function)
subset(t5, !EID %in% skate$EID)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.