r语言 - 没有枢轴列的旋转



我有一个像这样的数据框架:

avg_cost avg_assets avg_liabilities avg_income
100432   203998      76020          89021

我想在R

中对数据框进行转置
type              stat
avg_cost          100432
avg_assets        203998
avg_liabilities   76020
avg_income        89021

我试过使用pivot_longer,但我没有一个列来pivot。我只想对整个数据框进行转置。我该怎么做呢?

如果只有一行,则以下内容足够。如果不能使用pivot/塑形/熔化

in Base R:

setNames(rev(stack(df1)), c('stat', 'type'))
             stat   type
1        avg_cost 100432
2      avg_assets 203998
3 avg_liabilities  76020
4      avg_income  89021
在tidyverse:

enframe(unlist(df1), 'stat', 'type')
# A tibble: 4 x 2
  stat              type
  <chr>            <int>
1 avg_cost        100432
2 avg_assets      203998
3 avg_liabilities  76020
4 avg_income       89021
在datatable:

data.table::transpose(df1, keep.names = 'stat')
             stat     V1
1        avg_cost 100432
2      avg_assets 203998
3 avg_liabilities  76020
4      avg_income  89021

如果是单行数据集,则使用data.frame

data.frame(type = names(df1), stat = unlist(df1, use.names = FALSE))
             type   stat
1        avg_cost 100432
2      avg_assets 203998
3 avg_liabilities  76020
4      avg_income  89021

为了简化,我们可以使用列名作为行名;如果您绝对需要将它们放在一个列中,那么很容易将行名转换为一个列。

data.frame(stat = t(df1))
#                 stat
# avg_cost        100432
# avg_assets      203998
# avg_liabilities  76020
# avg_income       89021

或者如果有多行:

df1.pivot <- as.data.frame(t(df1))
names(df1.pivot) <- c("stat", ...)

数据:

df1 <- structure(list(avg_cost = 100432, avg_assets = 203998, avg_liabilities = 76020, 
                        avg_income = 89021), 
                 row.names = c(NA, -1L), class = "data.frame")

我想是这样的吧?在这种情况下,您将需要使用purrr::tranpose

library(tidyverse)
df1 <- tribble(~avg_cost, ~avg_assets, ~avg_liabilities, ~avg_income,
        100432,   203998,     76020,         89021)
df2 <- tibble(stat = df1 %>%  purrr::transpose()) %>%
  unnest(c(stat)) %>%
  mutate(type = names(stat), .before = 1) %>%
  unnest(c(stat)); df2
#> # A tibble: 4 × 2
#>   type              stat
#>   <chr>            <dbl>
#> 1 avg_cost        100432
#> 2 avg_assets      203998
#> 3 avg_liabilities  76020
#> 4 avg_income       89021

由reprex包(v2.0.1)于2022-04-15创建

最新更新