更改prop.table()

时间:2016-07-29 14:30:01

标签: r sorting layout

我有一个从文件中读取的数据框:sassign。我使用prop.table()创建了一个频率表。这是我使用的:

prop.table(table(sassign$state))

输出是:

    AE      CT      DC      DE      MA      MD      ME      NH      NJ      NY      PA      RI      VA      VI      VT 
0.00010 0.05024 0.00678 0.01422 0.08504 0.08344 0.00686 0.01330 0.22136 0.33060 0.17436 0.00804 0.00054 0.00090 0.00422 

此输出非常笨重。有什么方法我可以将其组织为一个列,包括出现次数然后对其进行排序?

我也试过CrossTabs,但它更笨拙。

CrossTable(sassign$state)

  Cell Contents
|-------------------------|
|                       N |
|         N / Table Total |
|-------------------------|


Total Observations in Table:  50000 


          |        AE |        CT |        DC |        DE |        MA | 
          |-----------|-----------|-----------|-----------|-----------|
          |         5 |      2512 |       339 |       711 |      4252 | 
          |     0.000 |     0.050 |     0.007 |     0.014 |     0.085 | 
          |-----------|-----------|-----------|-----------|-----------|


          |        MD |        ME |        NH |        NJ |        NY | 
          |-----------|-----------|-----------|-----------|-----------|
          |      4172 |       343 |       665 |     11068 |     16530 | 
          |     0.083 |     0.007 |     0.013 |     0.221 |     0.331 | 
          |-----------|-----------|-----------|-----------|-----------|


          |        PA |        RI |        VA |        VI |        VT | 
          |-----------|-----------|-----------|-----------|-----------|
          |      8718 |       402 |        27 |        45 |       211 | 
          |     0.174 |     0.008 |     0.001 |     0.001 |     0.004 | 
          |-----------|-----------|-----------|-----------|-----------|

我是初学者,已经开始与R合作过去4天了。我在这种情况下花了大约4个小时,所以我很感激任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:3)

发布时,最好提供一个实际有效的示例。您提供了输出,但没有提供用于生成输出的数据,因此无法重新创建输出。我将为此示例创建一部分数据(前4个状态):

state <- c(rep("AE", 5), rep("CT", 2512), rep("DC", 339), rep("DE", 711))

现在,您应该将prop.table()的结果保存在对象中,以便继续使用它。

tab <- prop.table(table(state))

然后你可能想创建一个data.frame,其状态为一列,比例为另一列,如下所示:

df <- data.frame(state=names(tab), proportion=as.numeric(tab))

df的内容现在是:

  state  proportion
1    AE 0.001401738
2    CT 0.704233249
3    DC 0.095037847
4    DE 0.199327166

如果您还想按比例对行进行排序,则可以执行

df <- df[order(df$proportion),]

答案 1 :(得分:0)

您可以在表格内执行此操作: table(data $ x,dnn =“ Frecuencia”)[order(table(data $ x))])

使用dnn输入列名

因此使用prop.table看起来像这样:

prop.table(table(data$x,dnn = "Frecuencia")[order(table(data$x))]),2)