28

mtcars基本的な R を使用して、同じクラスのすべての列を持つデータフレーム (たとえば、 ) を転置できます。

as.data.frame(t(mtcars))

またはパイプで:

library(magrittr)
mtcars %>% t %>% as.data.frame

tidyr または tidyverse パッケージ内で同じことを達成するにはどうすればよいですか?

以下の私の試みは次のとおりです。

エラー: 行の識別子が重複しています

library(tidyverse)
mtcars %>% gather(var, value, everything()) %>% spread(var, value)
4

2 に答える 2

66

試してみてくださいadd_rownames

add_rownames(mtcars) %>% 
         gather(var, value, -rowname) %>% 
         spread(rowname, value) 

新しいバージョンでは、rownames_to_column置き換えますadd_rownames

mtcars %>%
   rownames_to_column %>% 
   gather(var, value, -rowname) %>% 
   spread(rowname, value) 

さらに新しいバージョンでは、以下をpivot_wider置き換えますspread:

mtcars %>%
   tibble::rownames_to_column() %>%  
   pivot_longer(-rowname) %>% 
   pivot_wider(names_from=rowname, values_from=value) 
于 2016-10-28T14:57:05.003 に答える