在R中转置data.frame并将其中一列设置为新转置表的标题的最佳方法是什么?

在R中转置data.frame并将其中一列设置为新转置表的标题的最佳方法是什么?,r,dataframe,transpose,R,Dataframe,Transpose,在R中转置data.frame并将其中一列设置为新转置表的标题的最佳方法是什么?我在下面编了一个方法。由于我对R还是新手,我希望得到一些建议来改进我的代码,以及更像R的替代方案。不幸的是,我的解决方案也有点硬编码(即,新列标题位于某个位置) #假设一个名为fooData的data.frame #假设该列是转置前的第一列 #转置表 fooData.T通过使用 # Transpose table YOU WANT fooData.T <- t(fooData[,2:ncol(fooData)]

在R中转置data.frame并将其中一列设置为新转置表的标题的最佳方法是什么?我在下面编了一个方法。由于我对R还是新手,我希望得到一些建议来改进我的代码,以及更像R的替代方案。不幸的是,我的解决方案也有点硬编码(即,新列标题位于某个位置)

#假设一个名为fooData的data.frame
#假设该列是转置前的第一列
#转置表

fooData.T通过使用

# Transpose table YOU WANT
fooData.T <- t(fooData[,2:ncol(fooData)])

# Set the column headings from the first column in the original table
colnames(fooData.T) <- fooData[,1] 
#转置所需的表

T我有一个类似的问题——我有一个长格式的因子变量,我希望每个因子都是一个新的列标题;使用统计库中的“unstack”一步完成。如果您想要作为标题的列不是一个因素,则从重塑库中“强制转换”可能会起作用。

以下是我使用
dplyr
对具有分组列和
id
列的
data.frame
的两分钱

id_transpose <- function(df, id){
  df %>% 
    ungroup() %>% 
    select(where(is.numeric)) %>% 
    t() %>% 
    as_tibble() %>% 
    setNames(., df %>% pull({{id}}))
}
id\u转置%
解组()%>%
选择(其中(为数值))%>%
t()%>%
as_tible()%>%
集合名(,df%>%pull({{id}}))
}

这一点很好,据我所知,这应该会使它更快,因为它必须传输更少的数据。而且看起来更整洁。矩阵问题是我遇到的问题之一,我不得不使用一个类(fooData.T)来回答这个问题,因为没有其他选择,这对于编程来说很奇怪,因为通常有很多方法来解决问题。第二条指令有问题,它应该是
colnames(fooData.T)可能重复的
id_transpose <- function(df, id){
  df %>% 
    ungroup() %>% 
    select(where(is.numeric)) %>% 
    t() %>% 
    as_tibble() %>% 
    setNames(., df %>% pull({{id}}))
}