Как удалить строки с NA из двух информационных фреймов на основе NA из одного? - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь удалить те же строки с NA в df1 из df2. например.

df1
    A
1   1
2   NA
3   7
4   NA


df2
    A B C D
1   2 4 7 10
2   3 6 1 3
3   9 5 1 3
4   4 9 2 5

Ожидаемый результат:

df1
    A
1   1
3   7


df2
    A B C D
1   2 4 7 10
3   9 5 1 3

Я уже пробовал что-то вроде ...

newdf <- df2[-which(rowSums(is.na(df1))),]

и

noNA <- function(x) { x[!rowSums(!is.na(df1)) == 1]}
NMR_6mos_noNA <- as.data.frame(lapply(df2, noNA))

или

noNA <- function(x) { x[,!is.na(df1)]}
newdf3 <- as.data.frame(lapply(df2, noNA))

1 Ответ

3 голосов
/ 04 июля 2019

Мы можем использовать is.na для создания логического условия и использовать его для подстановки строк 'df1' и 'df2'

i1 <- !is.na(df1$A)
df1[i1, , drop = FALSE]
#  A
#1 1
#3 7

df2[i1,]
#   A B C  D
# 1 2 4 7 10
#3 9 5 1  3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...