我有一个包含5列和18,000,000行的数据集。我需要根据第1列中的值来隔离数据,第1列中的值是1到1000之间的数字,并且它们重复一定次数,彼此不相同。如何使用for循环隔离数据,为第1列中的每个数字创建nX5数组,即如果1进来60次,我应该有一个60X5的矩阵。它应该查找该数字并在循环中分隔所有这些实例。我一直在尝试
for (i in 1:2) A[i] <- Data[ which(Data$Column=='i')]
但没有发生任何事。 [A]向量保持为空,我无法提取数据。
答案 0 :(得分:0)
如果您拥有如此庞大的数据框架,我强烈建议您使用data.table。 (评论中附有链接)。
无论如何,以下内容可能会给你一些见解:
seg.ID = unique(Data[,1])
results = list()
for (ID in seg.ID)
{
results[[ID]] = Data[Data[,1] == ID, ]
}
print(results)
答案 1 :(得分:0)
使用split函数可以解决这个问题。假设数据框如下所示:
> df
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
7 10 18
8 10 26
9 10 34
10 11 17
您可以使用拆分功能将数据帧拆分为数据帧列表。
> split(df,df$speed)
$`4`
speed dist
1 4 2
2 4 10
$`7`
speed dist
3 7 4
4 7 22
$`8`
speed dist
5 8 16
$`9`
speed dist
6 9 10
$`10`
speed dist
7 10 18
8 10 26
9 10 34
$`11`
speed dist
10 11 17
我希望这能解决你的问题。
在此处阅读有关拆分功能的更多信息http://astrostatistics.psu.edu/su07/R/html/base/html/split.html