R 如何将一行拆分为多行,其中列具有相同的值类型

R 如何将一行拆分为多行,其中列具有相同的值类型,r,dataframe,data-wrangling,R,Dataframe,Data Wrangling,我有一个广泛的数据集,这使得以我需要的方式操作数据非常困难。它看起来像下面的虚拟表: 本质上,如表中所示,一行中保存的信息是用户级别的,您有一个用户id,然后每个用户拥有的所有动物都在这一行中。我想要的是,我希望这是在动物层面上,这样一个用户就可以有多个条目,它们代表了他们不同的动物。我已经在下面粘贴了一张我希望它看起来像什么的表格: 有没有一个简单的方法可以做到这一点?我想知道怎么做,但这是个冗长的问题。我想可以通过只与一种动物相关的选定列进行子集划分,然后将数据集合并到一起。问题是,在5

我有一个广泛的数据集,这使得以我需要的方式操作数据非常困难。它看起来像下面的虚拟表:

本质上,如表中所示,一行中保存的信息是用户级别的,您有一个用户id,然后每个用户拥有的所有动物都在这一行中。我想要的是,我希望这是在动物层面上,这样一个用户就可以有多个条目,它们代表了他们不同的动物。我已经在下面粘贴了一张我希望它看起来像什么的表格:

有没有一个简单的方法可以做到这一点?我想知道怎么做,但这是个冗长的问题。我想可以通过只与一种动物相关的选定列进行子集划分,然后将数据集合并到一起。问题是,在5月份的数据中,一个人可能有多达100只动物,这使得这个问题非常冗长

有人能给我一个建议或一个包/命令,让我把这个宽数据集改成一个长数据集吗


谢谢。

首先,您应该提供有人可以轻松插入R的数据。屏幕截图没有帮助,会增加一个人需要执行的工作量来帮助您

您拥有的数据应该能够被拆分,并与
bind\u行
rbind
重新组合。我将把数据子集为三个数据帧、重命名列和绑定。假设您的原始数据被称为
df

df1 <- df[,c(1:4)]

df2 <- df[,c(1,5:7)]

df3 <- df[,c(1,8:10)]

# rename columns to match
names(df1) <- c('user id', 'animal', 'colour', 'legs')
names(df2) <- c('user id', 'animal', 'colour', 'legs')
names(df3) <- c('user id', 'animal', 'colour', 'legs')

remade <- bind_rows(df1, df2) %>%
  bind_rows(df3)

df1请将您的样本数据和结果数据作为code或
dput
共享。无法将图像复制并粘贴到编辑器中以再现问题。-如果社区可以用数据集而不是图像来复制您的问题,则更有可能得到答案。