根据r中的唯一id将数据帧的多行折叠为单行
我有一个包含数百万行的数据集。第一行有一个ID,尽管数据集中有重复的ID(所有ID都是分组和排序的)。数据集有多个列。我希望转换数据,使每个ID有一行项目,并且ID列的所有先前条目都按顺序放在一行中 请参见before数据的示例片段 以及我希望数据是什么样子的示例 下面是一个非常类似的问题的示例,但是在这个问题中,数据只有两列(一列表示ID),但我的数据有超过5列(一列表示ID):根据r中的唯一id将数据帧的多行折叠为单行,r,database,excel,R,Database,Excel,我有一个包含数百万行的数据集。第一行有一个ID,尽管数据集中有重复的ID(所有ID都是分组和排序的)。数据集有多个列。我希望转换数据,使每个ID有一行项目,并且ID列的所有先前条目都按顺序放在一行中 请参见before数据的示例片段 以及我希望数据是什么样子的示例 下面是一个非常类似的问题的示例,但是在这个问题中,数据只有两列(一列表示ID),但我的数据有超过5列(一列表示ID): 我想在R或Excel中执行此操作:)在R中,我们可以使用data.table中的dcast执行此操作 libr
我想在R或Excel中执行此操作:)在
R
中,我们可以使用data.table中的dcast
执行此操作
library(data.table)
dcast(setDT(df1), ID ~ rowid(ID), value.var = c("V1", "V2"), fill = "")
# ID V1_1 V1_2 V1_3 V2_1 V2_2 V2_3
#1: 1 a b c aa bb cc
#2: 2 d e dd ee
#3: 3 f ff
数据
df1谢谢,这很有效。然而,当我第二天尝试用相同的代码再次运行它时(我在前一天晚上保存了代码),我得到了一个错误,错误是:error in.subset2(x,I,exact=exact):subscript out out bounds另外:警告消息:in if(!(value.var%in%names(data))){:条件的长度大于1,并且只有第一个元素将被删除used@user5211911你能根据post上的数据进行尝试吗?是的,即使我使用了你帖子中的数据,它也会这样做。我将你帖子中的数据复制粘贴到R中,但它不起作用,并给了我相同的错误。虽然这很奇怪,因为我第一次尝试时它起作用,但n哦,它不工作了。我只是一次又一次地打开和关闭我的电脑,代码现在工作了……很奇怪
df1 <- structure(list(ID = c(1, 1, 1, 2, 2, 3), V1 = c("a", "b", "c",
"d", "e", "f"), V2 = c("aa", "bb", "cc", "dd", "ee", "ff")), .Names = c("ID",
"V1", "V2"), row.names = c(NA, -6L), class = "data.frame")