R语言 如何将列转换为行,从tibble命名

tag5nh1u  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(208)

这是一个样本(通常是15 x 17),来自我的数据集entrepreneur,它是从Excel导入的read_excel

structure(list(Factors = c("Competition", "Cultural Support", "Financing", "High Growth", "Human Capital"), `Baden-Württemberg` = c("0.71", "0.66", "0.81", "0.62", "0.46"), Bayern =c("0.67", "0.66", "0.83", "0.77", "0.49"), Berlin = c("1.00", "0.56", "0.90", "0.82", "0.79"), Brandenburg = c("1.00", "0.55", "0.64", "1.00", "0.77")), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"))

或以这种格式:

EntrepreneurIndex
# A tibble: 5 x 5
  Factors          `Baden-Württemberg` Bayern Berlin Brandenburg
  <chr>            <chr>               <chr>  <chr>  <chr>      
1 Competition      0.71                0.67   1.00   1.00       
2 Cultural Support 0.66                0.66   0.56   0.55       
3 Financing        0.81                0.83   0.90   0.64       
4 High Growth      0.62                0.77   0.82   1.00       
5 Human Capital    0.46                0.49   0.79   0.77

你可以看到的第一列是由我的因子变量组成的。我想把第一列转换成行名。我使用了如下代码

rownames(entrepreneur)  <- entrepreneur[,1]

,这导致了``.rowNamesDF<-(x, value = value) : non-valid 'row.names' length Zusätzlich: Warnmeldung: Setting row names on a tibble is deprecated.中的错误消息错误
不幸的是,我是tibles概念的新手。我曾尝试将数据转换为 Dataframe ,就像另一篇文章https://stackoverflow.com/a/50904626建议使用as.data.frame(entrepreneur)一样,但这只会导致与以前相同的错误消息。
https://tibble.tidyverse.org/reference/rownames.html建议我使用

column_to_rownames(entrepreneur, var = "Factors")

这不会导致错误,但不会将第一列转换为行名。
在阅读了建议和其他帖子之后,我现在不确定是否可以将tibble的第一列转移到row names列中。如果可能的话,我最好将第一列作为行名,以便进一步分析(回归等)。

w8f9ii69

w8f9ii691#

首先,你可以看出区别

> str(entrepreneur[, 1])
tibble [5 x 1] (S3: tbl_df/tbl/data.frame)
 $ Factors: chr [1:5] "Competition" "Cultural Support" "Financing" "High Growth" ...      

> str(entrepreneur[[1]])
 chr [1:5] "Competition" "Cultural Support" "Financing" "High Growth" ...

尝试下面的代码(使用entrepreneur[[1]]而不是entrepreneur[,1]

> `rownames<-`(as.data.frame(entrepreneur[-1]), entrepreneur[[1]])
                 Baden-Wⁿrttemberg Bayern Berlin Brandenburg
Competition                   0.71   0.67   1.00        1.00
Cultural Support              0.66   0.66   0.56        0.55
Financing                     0.81   0.83   0.90        0.64
High Growth                   0.62   0.77   0.82        1.00
Human Capital                 0.46   0.49   0.79        0.77
wgxvkvu9

wgxvkvu92#

您可以像这样设置行名:

rownames(entrepreneur) <- entrepreneur$Factors

然而,如果你打算对每一行的数据运行回归,而不是设置行名称,你可能想看看如何制作嵌套的tibble-基本上,一行由tibble组成的tibble(tibbles in tibbles!)。然后你可以用purrr::map()在这些嵌套的tibble上迭代函数,例如对每一行数据运行回归,并将结果全部保存在一个tibble中。
你可以阅读更多关于嵌套tibles这里:https://tidyr.tidyverse.org/articles/nest.html

相关问题