2015-10-15 74 views
0

我有一個5列和約18,000,000行的數據集。我需要根據第1列中的值分離數據,第1列中的值是1到1000之間的數字,並且它們會重複一定次數,而不會互相排斥。我如何使用for循環分隔數據,爲第1列中的每個數字創建nX5數組,即,如果1來到60次,我應該有60X5的矩陣。它應該查找該數字,並將所有這些實例分隔開來。我一直在嘗試循環在R程序

for (i in 1:2) A[i] <- Data[ which(Data$Column=='i')] 

但什麼也沒有發生。 [A]矢量仍爲空,我無法提取數據。

+2

'$的數據列=='i''字面檢查‘我’不是變量i的值。 –

+0

如果您擁有如此多的數據行,請嘗試使用'data.table' .http://datatable.r-forge.r-project.org/datatable-intro.pdf http://user2014.stat.ucla .edu/files/tutorial_Matt.pdf – 2015-10-15 08:36:27

+1

@Deena,這是一個古老的鏈接。請參閱github上的[data.table項目頁面wiki](https://github.com/Rdatatable/data.table/wiki)。 – Arun

回答

0

如果你有這麼大的數據框,我強烈推薦使用data.table。 (鏈接附在評論中)。

不管怎樣,下面可能給你一些啓示:

seg.ID = unique(Data[,1]) 
results = list() 

for (ID in seg.ID) 
{ 
results[[ID]] = Data[Data[,1] == ID, ] 
} 

print(results) 
0

被如圖所示這個問題可以採用分體式function.Suppose數據幀來解決:

> 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