我想要得到兩個數據幀之間不匹配的總數NA
。 我發現得到這兩個向量的方式如下:使用兩個數據幀作爲輸入的函數
compareNA <- function(v1,v2) {
same <- (v1 == v2) | (is.na(v1) & is.na(v2))
same[is.na(same)] <- FALSE
n <- 0
for (i in 1:length(same))
if (same[i] == "FALSE"){
n <- n+1
}
return(n)
}
可以說我有矢量a
和b
比較它們時,我得到的結果是2
a <- c(1,2,NA, 4,5,6,NA,8)
b <- c(NA,2,NA, 4,NA,6,NA,8)
h <- compareNA(a,b)
h
[1] 2
我的問題是:如何將這個函數應用於數據框而不是向量?
有作爲一個例子這datafames:
a2 <- c(1,2,NA,NA,NA,6,NA,8)
b2 <- c(1,NA,NA,4,NA,6,NA,NA)
df1 <- data.frame(a,b)
df2 <- data.frame(a2,b2)
我所期望的結果是5,因爲這是出現在DF2不在DF1 NA
S中的總數。任何建議如何使這項工作?
但是如果我有沒有相同的colnames dataframes,然後我要改變列的名稱? – mina
@mina,或者省略'intersect'並確保列完全對齊。 –
有一點,你需要一些規則來匹配列,這可以通過名稱(我在這裏使用的)和使用相交。另一種方法是添加一個'by'參數,比如'merge'函數或''dplyr''的'join'函數。你也可以按照上面羅馬所說的位置來匹配它們。 – Choubi