在R程序中循环

时间:2015-10-15 08:20:56

标签: r loops data-extraction

我有一个包含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]向量保持为空,我无法提取数据。

2 个答案:

答案 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