我有一个2列数据框,我想改为2行。维度是40个观测值和2个变量(而我想要的是40个变量和1个观测值,因为我希望第一行成为列标题)。
我尝试使用重塑,但由于不断出错,我似乎无法正确处理。这是我正在使用的数据框:
Data.Label Test2
1 Family Petromyzontidae - lampreys
2 Species Ichthyomyzon castaneus
3 Taxonomic Authority Girard, 1858
4 Common Name(s) Chestnut Lamprey
5 French Name lamproie brune
6 OMNR Code 016
Test5 <- reshape(Test4, timevar = Test4$Data.Label, idvar = Test4$Test2,direction = "wide")
Error in `[.data.frame`(data, , idvar) : undefined columns selected
如上所述,我尝试使用重塑。因为有40个变量希望成为列标题(Test4 $ Data.Label),所以我不想为idvars写出每个变量。还有另一种方法吗?
所需的结果将是:
Family Species Taxonomic Authority Common Name(s) French Name OMNR Code
Petromyzontidae lampreys Ichthyomyzon castaneus Girard, 1858 Chestnut Lamprey lamproie brune 016
通过这种方式,Test4 $ Data.Label列成为列标题(总共40个),而Test4 $ Test2列成为第一行。
答案 0 :(得分:1)
可以选择deframe
并转换为list
library(tidyverse)
deframe(df1) %>%
as.list %>%
as_tibble
# A tibble: 1 x 6
# Family Species `Taxonomic Authorit… `Common Name(s)` `French Name` `OMNR Code`
# <chr> <chr> <chr> <chr> <chr> <chr>
#1 Petromyzontidae - lampr… Ichthyomyzon castan… Girard, 1858 Chestnut Lamprey lamproie bru… 016
df1 <- structure(list(Data.Label = c("Family", "Species",
"Taxonomic Authority",
"Common Name(s)", "French Name", "OMNR Code"),
Test2 = c("Petromyzontidae - lampreys",
"Ichthyomyzon castaneus", "Girard, 1858", "Chestnut Lamprey",
"lamproie brune", "016")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))