Таблица непредвиденных обстоятельств из кадра данных 2x3 в r

у меня есть это дф

Genero   Frustrado  No frustrado
<chr>      <int>        <int>
Hombre      138           9 
Mujer       145          12 

И мне нужно превратить это в таблицу непредвиденных обстоятельств, например:


                Frustrado  
Genero       Si          No
    
Hombre      138           9 
Mujer       145          12 


Как я могу сделать это с помощью простого фрагмента кода? (Мне нужно повторять это много раз, и я бы предпочел не писать векторы каждый раз)

Спасибо!


person Ale Rey    schedule 05.10.2020    source источник


Ответы (2)


Может быть, вы можете попробовать код ниже

`dimnames<-`(
  as.table(as.matrix(df[-1])),
  list(Genero = df$Genero, Frustrado = c("si", "No"))
)

который дает

        Frustrado
Genero    si  No
  Hombre 138   9
  Mujer  145  12

Данные

> dput(df)
structure(list(Genero = c("Hombre", "Mujer"), Frustrado = c(138L,
145L), `No frustrado` = c(9L, 12L)), class = "data.frame", row.names = c(NA,
-2L))
person ThomasIsCoding    schedule 05.10.2020
comment
Извините, @Thomas, но я не совсем понимаю первую часть кода dimnames<-. Я запустил его, и он выдает эту ошибку. Ошибка в df $ Genero: объект типа «закрытие» не является подмножеством. - person Ale Rey; 05.10.2020
comment
@AleRey это потому, что Томас очень разумно предполагает, что ваша табличка называется df. Измените df в этом коде на имя вашего фрейма данных, и это должно работать - person Allan Cameron; 06.10.2020
comment
@AleRey dimnames<- присваивает имена размерам таблицы. Я думаю, вы получили эту ошибку, так как у вас есть факторы в вашем df. Сначала попробуйте df <- type.convert(df,as.is = TRUE), а затем запустите приведенный выше код. - person ThomasIsCoding; 06.10.2020
comment
Спасибо @AllanCameron, но я все равно сделал это, и это был результат. dimnames<-( as.table(as.matrix(tabla_genero_pivot[-1])), list(Genero = tabla_genero_pivot$Genero, Frustrado = c(si, No)) ) - person Ale Rey; 06.10.2020
comment
@ Томас, это было все! Я сделал то, что вы сказали, и работает отлично! Ваше здоровье! - person Ale Rey; 06.10.2020
comment
@AllanCameron, ошибка, возникшая после того, как я изменил df (в первый раз, когда я забыл), на самом деле была следующей: Ошибка в dimnames(as.table(as.matrix(frustracion_genero_pivot[-1])), list(Genero = frustracion_genero_pivot $Genero, : 2 аргумента передаются в 'dimnames', для которых требуется 1 - person Ale Rey; 06.10.2020

Мы можем использовать column_to_rownames

library(tibble)
out <- df %>%
          column_to_rownames('Genero') %>%
          as.matrix

names(dimnames(out)) <- names(df)[1:2]

данные

df <- structure(list(Genero = c("Hombre", "Mujer"), Frustrado = c(138L,
145L), `No frustrado` = c(9L, 12L)), class = "data.frame", row.names = c(NA,
-2L))
person akrun    schedule 05.10.2020