Как выбрать два столбца в кадре данных в R? - PullRequest
0 голосов
/ 02 мая 2019

Представьте, что я получил 2 df с именами A и B. Для каждой строки df A я хотел бы проверить, есть ли соответствующая строка в B df.В приведенном ниже примере код выведет мне только один ответ TRUE, поскольку последняя строка в df A не совпадает с последней строкой в ​​df B.

A <- NULL
B <- NULL
A <- data.frame(A = c('a','b','c','d','e'), B = c('1','2','3','4','5'))
B <- data.frame(A = c('a','b','c','d','f'), B = c('1','2','3','4','5'))

i <- 0
for(i in 1: length(A$A))
{
  point <- A[i,]
  if(!point %in% B[which[1:2]])
    print(TRUE)
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Вы можете проверить, содержит ли анти-объединение двух таблиц какие-либо строки (т.е. есть ли какие-либо строки, не равные между двумя фреймами данных в общих столбцах), и вывести TRUE, если это так

if(diff_rows <- nrow(dplyr::anti_join(A, B)) > 0) print(diff_rows)

# Joining, by = c("A", "B")
# [1] TRUE
# Warning message:
# Column `A` joining factors with different levels, coercing to character vector

Вы можете очистить вывод, если хотите игнорировать предупреждения

if(diff_rows <- nrow(suppressWarnings(dplyr::anti_join(A, B, by = names(A)))) > 0) 
  print(diff_rows)

# [1] TRUE 
0 голосов
/ 02 мая 2019
bool = Reduce(paste, A) %in% Reduce(paste, B)
transform(A, msg = c("Absent", "Present")[bool + 1])
#  A B     msg
#1 a 1 Present
#2 b 2 Present
#3 c 3 Present
#4 d 4 Present
#5 e 5  Absent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...