Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据r中的唯一id将数据帧的多行折叠为单行_R_Database_Excel - Fatal编程技术网

根据r中的唯一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

我有一个包含数百万行的数据集。第一行有一个ID,尽管数据集中有重复的ID(所有ID都是分组和排序的)。数据集有多个列。我希望转换数据,使每个ID有一行项目,并且ID列的所有先前条目都按顺序放在一行中

请参见before数据的示例片段

以及我希望数据是什么样子的示例

下面是一个非常类似的问题的示例,但是在这个问题中,数据只有两列(一列表示ID),但我的数据有超过5列(一列表示ID):


我想在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")