2017-02-22 48 views
1

Я хотел бы динамически подмножить фрейм данных и выполнить анализ с использованием одной фиксированной переменной и последовательно установить на другие переменные. Например, пусть говорят, у меня есть 3 переменного кадр данных (в моем случае, у меня есть 10):Динамический поднабор данных с помощью условного предложения

x y z 
a 1 1 
b 3 NA 
NA 5 0 
f NA 1 

Я хочу Подмножество обусловленности кадра данных на 1) х, г не хватает
2) y, z не хватает

моего вывода целенаправленного это:

x z 
a 1 
f 1 

y z 
1 1 
5 0 

Я хочу, чтобы это попарное сравнение, чтобы сделать динамически по всем моему набору данных с п числом переменных. Выходом может быть список.

+0

Возможный дубликат http://stackoverflow.com/questions/37192961/applying-combn-function-to-data-frame – akrun

ответ

2

Мы можем использовать combn, то зацикливание, подмножество и падение NA строки:

# dummy data 
df1 <- read.table(text = "x y z 
a 1 1 
        b 3 NA 
        NA 5 0 
        f NA 1", header = TRUE) 
# result 
apply(combn(colnames(df1), 2), 2, function(i){ 
    res <- df1[, i] 
    res[complete.cases(res), ] 
    }) 
# [[1]] 
# x y 
# 1 a 1 
# 2 b 3 
# 
# [[2]] 
# x z 
# 1 a 1 
# 4 f 1 
# 
# [[3]] 
# y z 
# 1 1 1 
# 3 5 0 
+1

или аналогично, 'lapply (combn (names (df), 2, FUN = list), function (x) na.omit (df [, x]))' –

+0

@docendodiscimus хороший трюк с FUN. Странно, что я застрял с 'complete.cases', хотя я знаю о' na.omit'. – zx8754

 Смежные вопросы

  • Нет связанных вопросов^_^