使用列名作为行名,并将一列中的值作为新列名创建新的数据框

时间:2018-11-08 20:42:40

标签: r

我是R的新手,我正在尝试从现有数据框创建一个新的数据框。我希望该列的值之一是新的列标题,我希望其余的现有列标题是行名,并且希望每个值都被填充。我已经搜索并尝试了很多方法,但是似乎无法弄清楚。

这是我数据的一小部分...原始数据大约有25列和5000行。

df1看起来像这样:

Station    month    year   rise   set    hrday
1            1      2016   334    1042   X1.134
2            3      2016   348    1053   X14.22
3            7      2016   242    1153   X23.233
4            2      2017   445    962    X10.753

我希望新的df具有列标题,这些列标题是“ hrday”中的值,而其余df1列标题则是行名。它应该看起来像这样:

           X1.134    X14.22     X23.233    X10.753
year       2016      2016       2016       2017
month      1         3          7          2
rise       334       348        242        445       
set        1042      1053       1153       962

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用基本t()和tidyverse + magrittr的示例

k <- tibble(Station = 1:4,
       year = c(2016,2016,2016,2017),
       month = c(1,3,7,2),
       rise = c(334,348,242,445),
       set = c(1042,1053,1153,962),
       hrday = c("X1.134","X14.22", "X23.233","X10.753"))


new_df <- k %>% select(-Station,-hrday) %>% t() %>% as_tibble() %>%
  magrittr::set_colnames(c(k$hrday)) %>%
  mutate(var =subset(colnames(k),!colnames(k) %in% c("hrday","Station"))) %>%
  dplyr::select(var, X1.134:X10.753)

new_df