Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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中的data.frame?_R_Reshape - Fatal编程技术网

如何在没有循环的情况下重塑R中的data.frame?

如何在没有循环的情况下重塑R中的data.frame?,r,reshape,R,Reshape,我在R中有一个data.frame。我需要比较两行数据,如果它们相同,我需要合并行并将数据合并到一列中。我觉得在使用R时,这是一个常见的需求,因此使用ddply或其他包应该能够完成此任务。下面是数据的原样,dat,以及经过一段代码,foo之后它应该是什么样子。我是R的新手,因此非常感谢您的帮助 之前: dat <- structure(list(detected_id = c(11, 11, 4), reviewer_name = c("mike", "mike", "john"),

我在R中有一个
data.frame
。我需要比较两行数据,如果它们相同,我需要合并行并将数据合并到一列中。我觉得在使用R时,这是一个常见的需求,因此使用
ddply
或其他包应该能够完成此任务。下面是数据的原样,
dat
,以及经过一段代码,
foo之后它应该是什么样子。
我是R的新手,因此非常感谢您的帮助

之前:

 dat <- structure(list(detected_id = c(11, 11, 4), reviewer_name = c("mike", 
"mike", "john"), created_at = c("2016-05-04 10:02:45", "2016-05-04 10:02:45", 
"2016-05-04 10:02:45"), stage = c(2L, 2L, 1L), V7 = c("Detected Organism: Staphylococcus Aureus, Comment: Looks good", 
"Detected Organism: Staphylococcus Aureus, Comment: Note 1", 
"Detected Organism: Human Adenovirus 7, Comment: test")), .Names = c("detected_id", 
"reviewer_name", "created_at", "stage", "V7"), row.names = c(NA, 
-3L), class = "data.frame")
dat使用基本R

with(dat, aggregate(V7,list(detected_id=detected_id, reviewer_name=reviewer_name, created_at=created_at, stage=stage),paste,collapse=' '))
使用基数R

with(dat, aggregate(V7,list(detected_id=detected_id, reviewer_name=reviewer_name, created_at=created_at, stage=stage),paste,collapse=' '))

很好的解决方案,效果如预期。谢谢查看编辑Imade@webDevleoper101我不知道“失败”对你意味着什么。它完全按照预期工作。有点不清楚您希望得到什么-也许您想从
中提取
检测到的\u id
。。我刚刚删除了'detected_id'列,然后运行了代码,它可以正常工作。。谢谢np,很高兴workedgood解决方案能按预期工作。谢谢查看编辑Imade@webDevleoper101我不知道“失败”对你意味着什么。它完全按照预期工作。有点不清楚您希望得到什么-也许您想从
中提取
检测到的\u id
。。我刚刚删除了'detected_id'列,然后运行了代码,它可以正常工作。。谢谢np,很高兴workedI更喜欢你的解决方案,因为它只是以R为基数,请检查我刚才做的编辑我更喜欢你的解决方案,因为它只是以R为基数,请检查我刚才做的编辑
library(data.table)

setDT(dat)[, paste(V7, collapse = "; ")
           , by = .(detected_id, reviewer_name, created_at, stage)]
#   detected_id reviewer_name          created_at stage
#1:          11          mike 2016-05-04 10:02:45     2
#2:           4          john 2016-05-04 10:02:45     1
#                                                                                                                         V1
#1: Detected Organism: Staphylococcus Aureus, Comment: Looks good; Detected Organism: Staphylococcus Aureus, Comment: Note 1
#2:                                                                     Detected Organism: Human Adenovirus 7, Comment: test
with(dat, aggregate(V7,list(detected_id=detected_id, reviewer_name=reviewer_name, created_at=created_at, stage=stage),paste,collapse=' '))