我的大部分问题都是如何提取和组织数据,没有事先培训,我为我无法清楚表达我想要的内容而道歉。我希望我甚至能够知道如何用文字或在线阅读文章。这里是我的问题现在:如何在r中对子集和组进行循环?
我有一个信息数据框有一个唯一的组ID为ID,有153个唯一的ID,但我有来自这些组的信息> 6000行。
我想要做的是每次从2组中获取所有信息,并写出一个包含所有相关信息的简单csv文件。如果整体个体数量为奇数(n = 153),那么这将如何工作。
我想是这样的:
IDs = unique(dat$ID)
for (i in length(IDs)){
IDgp = subset(dat, dat$ID==IDs[i] & dat$ID==IDs[i+1])
write.csv(IDgp, paste(IDgp[i],".csv")
i = i+2
}
这不工作,我不知道如何得到它来增加下一个“组2”。我知道,循环笨重,我曾想过也许ddply可能工作,甚至是一个命令而不是子集。由于在R中有很多方法可以做事,我不知道甚至可以称之为我想做的事情。我想我有办法让它变得复杂。
我一直在寻找答案,并将其作为可能性发现,但不知道如何让它一次写入超过1组的信息,而且我不清楚函数(x)命令正在做:
d_ply(dat, "ID", function(x)
write.csv(x[i], file = paste(x$ID[i], ".csv")
, row.names = FALSE))
您是否需要将所有可能的组标识对的数据保存在不同的文件中? – DrDom 2012-04-23 19:14:14
我可能不会这样做,但你可以使用while循环代替。 – 2012-04-23 19:15:08
@DrDom不,不是所有可能的对,只是按顺序依次处理列表 - 生成一个文件,其中包含来自组1和2的信息,然后是来自组3和4的文件,然后是来自5和6的文件。 – Kerry 2012-04-23 19:17:51