分组&可视化R中的累积特征

时间:2014-04-24 18:22:38

标签: r

我有一个数据集如下所示。每个产品(P *)具有某个特征(F *)开/关(1/0)。我不能很好地格式化表格。

Product   F1   F2   F3  F4  ....
P1        1    0    1   1
P2        0    1    1   0
P3        1    0    1   1
P4        0    0    0   1
..
..
Total     2    1    3   3

我有两个问题。一个与创建如下所述的摘要有关,下一个是可视化此数据。

1)总结: 鉴于此数据集,我想获得On(1)的每个功能组合的产品总和。例如:

F1,F3,F4 = 2 i.e F1,F3,F4 are present in 2 products P1,P3.
F3,F4 = 2 i.e F3, F4 are present in 2 products P1,P3
F1, F2 = 2
F1, F4 = 2

在我的实际数据集中,功能数量约为200,产品数量为10k +。为了优化计算,我不介意为具有特定功能的产品百分比提供阈值。我的意思是,从给出的例子来看,假设我的阈值是50%,并且有4个产品,所以任何打开超过50%的特征即2被认为是分组,在这种情况下它将功能F1,F3,F4。不考虑F1,因为其列总和<&lt; 2。

2)可视化: 我想在条形图中可视化这个结果。请随意提出是否有更好的方法可视化。

我的方法:我是R和统计学的新手,但精通C#。

  1. 计算每个功能的总和。
  2. 对于从最高计数开始的每组总和,确定具有此功能的所有产品。从上面的示例数据集:F3,F4的最大计数为3(在阈值内),因此获取所有具有F3,F4开的产品。接下来(最大计数-1)2将是功能F1,F3,F4并获得具有这些功能的所有产品。这样做直到达到阈值。
  3. 我正在学习编写此代码,因此尚无共享的代码示例。

    我认为考虑到我的数据集的维度,我的方法在计算上是昂贵的,并且相信可能有更好的方法来实现这一点。提前感谢您的努力。

1 个答案:

答案 0 :(得分:1)

让您了解如何形象化。

# reading your example data
df <- read.table(text="Product   F1   F2   F3  F4
P1        1    0    1   1
P2        0    1    1   0
P3        1    0    1   1
P4        0    0    0   1", header=TRUE, strip.white=TRUE)

# reshape the data from wide to long format
require(reshape2)
df2 <- melt(df, id="Product")

# creating a barplot
require(ggplot2)
ggplot(df2, aes(x=Product, y=value, fill=variable)) +
  geom_bar(stat="identity")

给出: enter image description here