R 只保留「;“必要和充分的特征”;在数据帧中

R 只保留「;“必要和充分的特征”;在数据帧中,r,dataframe,R,Dataframe,我有一个dataframe,它由以下两列组成(作为示例): 在此数据框中,同一行上的要素相互关联。(如功能1和功能5) 因此,使用其中一个,我可以计算另一个 在这个数据帧中,我需要保留最少数量的特性来计算所有特性。 因此,我需要找到关键特征 示例1: INPUT: COLUMN-1 COLUMN-2 feature1 feature4 feature2 feature5 feature3 feature6 DESIRED OUTPUT: feature1 feature2 feature3

我有一个dataframe,它由以下两列组成(作为示例):

在此数据框中,同一行上的要素相互关联。(如功能1和功能5)
因此,使用其中一个,我可以计算另一个

在这个数据帧中,我需要保留最少数量的特性来计算所有特性。
因此,我需要找到关键特征

示例1

INPUT:

COLUMN-1 COLUMN-2
feature1 feature4
feature2 feature5
feature3 feature6

DESIRED OUTPUT:
feature1
feature2
feature3
INPUT:

COLUMN-1 COLUMN-2
feature1 feature3
feature1 feature4
feature2 feature6
feature3 feature6

DESIRED OUTPUT:
feature1
上面我可以计算特征4,5,6

示例2

INPUT:

COLUMN-1 COLUMN-2
feature1 feature4
feature2 feature5
feature3 feature6

DESIRED OUTPUT:
feature1
feature2
feature3
INPUT:

COLUMN-1 COLUMN-2
feature1 feature3
feature1 feature4
feature2 feature6
feature3 feature6

DESIRED OUTPUT:
feature1
上面我可以只使用feature1计算特征2,3,4,5,6

我的数据框可以容纳数千行。
所以我需要一个优雅的解决方案


提前感谢。

这里有一个使用
igraph
软件包的解决方案

memb <- clusters(graph_from_data_frame(df,directed = FALSE))$membership
res <- names(memb)[!duplicated(memb)]

  • 给定
    df,将特征视为节点,将数据视为图形中的边列表。每个连接的子图需要一行。
    igraph
    软件包可以提供帮助。(可能很复杂,它可能需要一个有向图,但
    igraph
    包仍然有帮助。)您基本上只需要保留第一列中的不同值?@RicardoSemiãoeCastro no!不是第一列。请参见示例2。我想第二个示例中所需的输出应该是两列中的任意一个元素,例如,
    feature1
    。请参见下面我的尝试。希望对你有用
    > res
    [1] "feature1"
    
    > dput(df1)
    structure(list(`COLUMN-1` = c("feature1", "feature2", "feature3"
    ), `COLUMN-2` = c("feature4", "feature5", "feature6")), class = "data.frame", row.names = c(NA,
    -3L))
    
    > dput(df2)
    structure(list(`COLUMN-1` = c("feature1", "feature1", "feature2", 
    "feature3"), `COLUMN-2` = c("feature3", "feature4", "feature6",
    "feature6")), class = "data.frame", row.names = c(NA, -4L))