[英]Smartest way to check if an observation in data.frame(x) exists also in data.frame(y) and populate a new column according with the result
有兩個數據框:
x <- data.frame(numbers=c('1','2','3','4','5','6','7','8','9'), coincidence="NA")
和
y <- data.frame(numbers=c('1','3','10'))
如何檢查y
(1、3和10)中的觀測值是否也存在於x
並相應地填充x["coincidence"]
(例如,使用YES | NO,TRUE | FALSE ...)。
我會在Excel中使用結合了IFERROR
和VLOOKUP
的公式來執行相同的操作,但是我不知道如何使用R來執行相同的操作。
注意:我願意將data.frames更改為表或使用庫。 具有要檢查的數字( y
)的數據框永遠不會有超過10到20個觀察值,而另一個( x
)永遠不會有超過1K個觀察值。 因此,如果需要的if
,我也可以使用if
進行迭代
我們可以通過設置差異搜索來創建與所需輸出匹配的向量,該搜索將在適當的情況下輸出布爾TRUE
和FALSE
值。 符號%in%
是二進制運算符,用於將左側的值與右側的值集進行比較:
x$coincidence <- x$numbers %in% y$numbers
# numbers coincidence
# 1 1 TRUE
# 2 2 FALSE
# 3 3 TRUE
# 4 4 FALSE
# 5 5 FALSE
# 6 6 FALSE
# 7 7 FALSE
# 8 8 FALSE
# 9 9 FALSE
設置數字時,數字是否一定是要素? (它們不是數字,而是字符。)如果不是,這很容易:
x <- data.frame(numbers=c('1','2','3','4','5','6','7','8','9'), coincidence="NA", stringsAsFactors=FALSE)
y <- data.frame(numbers=c('1','3','10'), stringsAsFactors=FALSE)
x$coincidence[x$numbers %in% y$numbers] <- TRUE
> x
numbers coincidence
1 1 TRUE
2 2 NA
3 3 TRUE
4 4 NA
5 5 NA
6 6 NA
7 7 NA
8 8 NA
9 9 NA
如果它們需要成為因素,那么您將需要設置通用級別或使用as.character()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.