【问题标题】:R - Table () does not return a 2 way table [duplicate]R - Table()不返回2路表[重复]
【发布时间】:2021-01-06 11:45:37
【问题描述】:

我正在使用 Table() 函数,希望得到一个列联表,但它返回 2 列和一个频率,而不是 2 路表。

这就是我正在做的:

denue <- read.csv("DENUE 2010.csv")
str(denue)

'data.frame':   416898 obs. of  13 variables:  
$ Nombre.de.la.unidad.económica  : chr  "MINERA METALURGICA TAPALPA" "PLANTA DE TRATAMIENTO DE AGUA RECIDUAL" "DESARROLLOS INMOBILIARIOS BMU" 
$ Razón.social                   : chr  "MINERA METALURGICA TAPALPA  S A DE C V"
$ Código.de.la.clase.de.actividad: int  212221 222111 236112 236211 236211 236221
$ Nombre.de.la.clase.de.actividad: Factor w/ 900 levels "ACABADO DE PRODUCTOS
$ Personal.ocupado..estrato.     : chr  "0 A 5 PERSONAS" "6 A 10 PERSONAS" 
$ Entidad.federativa             : chr  "DISTRITO FEDERAL" "DISTRITO FEDERAL" 
$ Municipio                      : Factor w/ 16 levels "ÁLVARO OBREGÓN",..:
$ Clave                          : int  2 2 2 2 2 2 2 2 2 2 ...  
$ Localidad                      : chr  "Azcapotzalco" "Azcapotzalco"...  
$ Área.geoestadística.básica     : chr  "0699" "0932" "1023" "0487" ...  
$ Area                           : Factor w/ 2415 levels "0020010","0020025",..:
$ Latitud                        : num  19.5 19.5 19.5 19.5 19.5 ...  
$ Longitud                       : num  -99.2 -99.2 -99.2 -99.2 -99.2 ...

denue <- data.frame(table(denue$Area, denue$Nombre.de.la.clase.de.actividad))

       Var1                          Var2 Freq
1   0020010 ACABADO DE PRODUCTOS TEXTILES    0
2   0020025 ACABADO DE PRODUCTOS TEXTILES    0
3   002003A ACABADO DE PRODUCTOS TEXTILES    0
4   0020044 ACABADO DE PRODUCTOS TEXTILES    0
5   0020097 ACABADO DE PRODUCTOS TEXTILES    0
6   002010A ACABADO DE PRODUCTOS TEXTILES    0
7   0020114 ACABADO DE PRODUCTOS TEXTILES    0
8   0020129 ACABADO DE PRODUCTOS TEXTILES    0
9   0020133 ACABADO DE PRODUCTOS TEXTILES    0
10  0020148 ACABADO DE PRODUCTOS TEXTILES    0

当我想要的是这样的:

        ACABADO DE PRODUCTOS TEXTILES . until 900th Nombre.de.la.clase.de.actividad
0020010
0020025
002003A  
0020044 

我做错了什么?

感谢您的宝贵时间。

【问题讨论】:

  • 你需要as.data.frame.matrix(table(denue$Area, denue$Nombre.de.la.clase.de.actividad))

标签: r


【解决方案1】:

如果我们查看as.data.frame.table的源代码

ex

因此,它扩展为两列 data.frame。相反,如果我们想转换为具有相似结构的data.frame,请将table 更改为matrix 并进行转换,这样它就不会调用as.data.frame.table,而是调用as.data.frame.matrix 或直接调用as.data.frame.matrix(因为as.data.frame(methods("as.data.frame"))有几种方法

as.data.frame.matrix(table(denue$Area, denue$Nombre.de.la.clase.de.actividad))

使用mtcars 的可重现示例

as.data.frame.matrix(table(mtcars$vs, mtcars$am))
#   0 1
#0 12 6
#1  7 7
as.data.frame(table(mtcars$vs, mtcars$am))
#  Var1 Var2 Freq
#1    0    0   12
#2    1    0    7
#3    0    1    6
#4    1    1    7

与方法相同

as.data.frame.table(table(mtcars$vs, mtcars$am))
#  Var1 Var2 Freq
#1    0    0   12
#2    1    0    7
#3    0    1    6
#4    1    1    7

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 2016-12-22
    • 2015-03-13
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2023-03-20
    • 2020-03-02
    • 2013-02-01
    相关资源
    最近更新 更多