R中的相对频率

时间:2016-05-31 18:23:06

标签: r machine-learning statistics

不确定我的主题是否正确。

我有这样的数据集

Category          Family        Item          Week
A                  A1            A11            1
A                  A2            A12            1
B                  B1            B11            1
C                  C2            C12            1
A                  A1            A11            2
A                  A2            A12            2
B                  B1            B11            3
C                  C2            C12            3
C                  C1            C11            3
A                  A2            A12            3

依旧......

我想知道这个表格中出现了两个不同项目的频率。

例如:

Week 1 has A11, A12, B11, C12
Week 2 has A11, A12
Week 3 has B11, B12, C11, A12

频繁的组合是

A12,A11 which came 2 times out of 3 weeks
B11, A12 which came 2 times out of 3 weeks

喜欢那个

我们能得到任何功能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用cbind.data.frame()table()功能,查看以下不同的组合:

 > table(cbind.data.frame(df$Week,df$Item))
              df$Item
 df$Week A11 A12 B11 C11 C12
       1   1   1   1   0   1
       2   1   1   0   0   0
       3   0   1   1   1   1

 > table(cbind.data.frame(df$Item,df$Week))
          df$Week
 df$Item 1 2 3
     A11 1 1 0
     A12 1 1 1
     B11 1 0 1
     C11 0 0 1
     C12 1 0 1

 > table(cbind.data.frame(df$Family,df$Week))
          df$Week
 df$Family 1 2 3
        A1 1 1 0
        A2 1 1 1
        B1 1 0 1
        C1 0 0 1
        C2 1 0 1

 > table(cbind.data.frame(df$Family,df$Item))
                 df$Item
 df$Family A11 A12 B11 C11 C12
        A1   2   0   0   0   0
        A2   0   3   0   0   0
        B1   0   0   2   0   0
        C1   0   0   0   1   0
        C2   0   0   0   0   2

 > table(cbind.data.frame(df$Category,df$Item))
                    df$Item
  df$Category A11 A12 B11 C11 C12
            A   2   3   0   0   0
            B   0   0   2   0   0
            C   0   0   0   1   2

答案 1 :(得分:0)

这不是一个如此出色的解决方案(说实话,这是我可以想象的不舒服的格式),但为了好玩,我尝试了一个符合您所需输出的解决方案:

sortWith

答案 2 :(得分:0)

假设您想要一些简单的数组,您可以轻松调用并稍后进行调整,第一件事可以通过

完成。
itemperweek=list()
for (i in 1:3){
itemperweek[[i]]=df$item[df$week==i]
}

第二个你也可以用

tableperweek13=table (df$Item[df$Week%in%c(1:3)])
tableperweek13[tableperweek13>1]

如果表中的级别多于1和2,我建议在第二行使用quantile() - 函数而不是1