如何使用dplyr使用索引来重组非常宽的数据帧?

问题描述 投票:0回答:1

我已经阅读了gather上的许多文章,但是我正在努力创建一种解决方案,该解决方案会将具有不同宽度的文件重组为长格式。

我的数据在这里:

library(RCurl)
x <- getURL("https://raw.githubusercontent.com/bac3917/Cauldron/master/jazz.csv")
df2 <- read.csv(text = x)

在上述情况下,我有3列的组,每列都需要堆叠起来。我尝试了以下方法,但是我的值分散到了错误的列中:

longJazz<- df2 %>% gather(key,
              value,
              X1:X69)

结果数据框应具有782行和3列(标题,年份和艺术家)。

在另一种情况下,我有5列的组,所以我想要一个可以简单调整的解决方案。例如,一个以数据框和每个组的列数为参数的函数将很方便。

r dplyr reshape
1个回答
0
投票

这里是一个选项

library(stringr)
library(dplyr)
library(readr)
library(tidyr)
df2 <- df2[-1]
i1 <- as.integer(gl(ncol(df2)-1, 3, ncol(df2)-1))

names(df2)[1:69] <- str_c(c("Details", "year", "Description"), i1, sep="_") 


 df2 %>% 
    mutate_at(vars(starts_with('year')), ~ as.integer(as.character(.))) %>%  
  pivot_longer(cols = -id, names_sep="_", names_to = c(".value", "group"))
© www.soinside.com 2019 - 2024. All rights reserved.