2017-02-22 49 views
1

我想動態地對數據框進行子集分析,並使用一個固定變量執行分析,並對其他變量依次進行條件分析。例如,讓說我有一個3可變的數據幀(在我的情況下,我有10):由條件語句動態子集數據框

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

欲子集上 1)x中的數據幀調節,Z沒有丟失
2) Y,Z是不缺

我針對性的輸出是這樣的:

x z 
a 1 
f 1 

y z 
1 1 
5 0 

我想這個兩兩比較,以動態地完成所有我的數據集的變量n個。輸出可以是一個列表。

+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