2017-02-22 71 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