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

R 使用列名作为行名,使用一列中的值作为新列名创建新数据框,r,R,我是R新手,我正在尝试从现有的数据帧创建一个新的数据帧。我希望列的一个值是新的列标题,我希望现有列标题的其余部分是行名称,并且我希望填充每个列的值。我已经搜索并尝试了很多东西,但我似乎无法找到答案 这是我的数据的一小部分…原始数据大约有25列和5000行 df1如下所示: Station month year rise set hrday 1 1 2016 334 1042 X1.134 2 3

我是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
           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
我希望新df的列标题是“hrday”中的值,其余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
           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
任何建议都将不胜感激。

使用base 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
k%t()%%>%as_tible()%%>%
magrittr::set_colnames(c(k$hrday))%>%
变异(var=subset(colnames(k),!colnames(k)%in%c(“hrday”,“Station”)))%>%
dplyr::select(变量,X1.134:X10.753)
新德里

您是否尝试过转置函数
t()
?如果是,请用您尝试过的实际代码编辑问题,并说明出了什么问题。还要添加您的数据(甚至是示例),以便人们可以使用您的代码。没问题,很乐意提供帮助。