【问题标题】:Keeping only the "Necessary and Sufficient features" in a Dataframe在数据框中只保留“必要和充分的特征”
【发布时间】:2020-10-20 22:59:04
【问题描述】:

我有一个由 2 列组成的数据框,如下所示(例如):

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

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

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

示例 1

INPUT:

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

DESIRED OUTPUT:
feature1
feature2
feature3

上面我可以计算特征 4,5,6。

示例 2

INPUT:

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

DESIRED OUTPUT:
feature1

上面我可以只使用feature1来计算特征2、3、4、5、6。

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

提前致谢。

【问题讨论】:

  • 将您的特征视为节点,将您的数据视为图中的边列表。每个连接的子图需要一行。 igraph 包可以提供帮助。 (可能很复杂,它可能需要一个有向图,但 igraph 包仍然可以提供帮助。)
  • 您基本上只需要保留第一列中的不同值吗?
  • @RicardoSemiãoeCastro 不!不是第一列。请参见示例 2。
  • 我猜第二个示例中所需的输出应该是两列中的任何一个元素,例如,仅限feature1
  • 在下面查看我的尝试。希望对你有用

标签: r dataframe


【解决方案1】:

这是使用igraph 包的解决方案

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

示例

  • 给定df &lt;- df1,我们将得到
> res
[1] "feature1" "feature2" "feature3"
  • 给定df &lt;- df2,我们将得到
> 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2014-02-10
    • 2017-02-10
    • 1970-01-01
    • 2021-04-15
    • 2023-01-28
    相关资源
    最近更新 更多