我有一个从文件中读取的数据框: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个小时,所以我很感激任何帮助。提前谢谢。
答案 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)