2014-01-21 56 views
4

我有一個大數據框,其中一個列中包含狀態名,另一列中包含不同索引。 我想通過狀態子集並創建一個對象,使用已經給出的計算來最小化索引或數據幀。按數據級別設置數據框

這裏是我有什麼

m 
    x y 
1 A 1.0 
2 A 2.0 
3 A 1.5 
4 B 3.0 
5 B 3.5 
6 C 7.0 

一個簡單的(短)的例子,我希望得到這個

m 
    x y 
1 A 1.0 
2 B 3.0 
3 C 7.0 

我不知道是否有一個功能循環是必要的。像

minimize<-function(x,...) 
for (i in m$x){ 
do something with data by factor value 
apply to that something the min function in every column 
return(y) 
} 

所以當你打電話

minimize(A) 
[1] 1 

我試過%使用%,但沒有工作(我得到這個錯誤)。

A%以%米 錯誤匹配(X,表,NOMATCH = 0L):對象 'A' 未找到

當我定義它它是這樣的。

A<-c("A") 
"A"%in%m 
[1] FALSE 

預先感謝您

+0

如果您需要使用這個子集要小心!首先檢查是否有任何NA的最小功能會混淆它,並給你錯誤的最小值 –

回答

2

嘗試aggregate

aggregate(y ~ x, m, min) 

    x y 
1 A 1 
2 B 3 
3 C 7 
+0

非常感謝你!我在R這麼新,我花了2個小時尋找這個答案,沒有人使用聚合。事實上,我現在還沒有找到其他職位 –

+0

@MatiasAndina不客氣! :) –

3

使用aggregate

> aggregate(.~x, FUN=min, dat) 
    x y 
1 A 1 
2 B 3 
3 C 7 

See this post得到一些其他的替代品。

1

使用data.table

require(data.table) 
m <- data.table(m) 

m[, j=min(y), by=x] 
# x V1 
# 1: A 1 
# 2: B 3 
# 3: C 7