2014-02-13 38 views
1

我有數據集,其中一系列批次的數據按順序存儲在一列中,併爲每個批次(也按順序)給出多個參數。該文件看起來是這樣的:R:如何以編程方式遍歷拆分的數據幀

LotID,Param,Nominal,Value 
R0001,Len,1.2500,1.234 
R0001,Dia,2.0000,1.979 
R0002,Len,1.2500,1.252 
R0002,Dia,2.0000,2.010 

我能夠深入到我需要將它導入到數據幀,由LotID拆分數據幀,然後通過帕拉姆,這是再次分割數據大。下面是我使用的代碼:

myCapFull <- read.csv("capabilityFull.csv") 
myCapSplit <- split(myCapFull, myCapFull$LotID) 
myR0001 <- split(myCapSplit$R0001,myCapSplit$R0001$Param) 
myR0001$Dia$Value # Returns 1.979 

但我想要做的是使用ITER遍歷每個批次的每一個參數,我不能找到一個辦法做到這一點編程。如果我知道LotID字段中的所有名稱,但我知道如何編寫代碼,但這在for/next循環中無效。我有一種感覺,我只缺少一個非常簡單的命令,而且我花了很多時間搜索,但沒有找到答案。我是R新手,這真的是我的第一個真實世界的應用程序,所以任何幫助將不勝感激。

回答

0

也許您在尋找subset

subset(myCapFull, Param=="Dia" & LotID == "R0001") 
# LotID Param Nominal Value 
# 2 R0001 Dia  2 1.979  

或者,你可以看看爲[.data.frame文檔更多信息如何子集或成data.tabledplyr,或plyr包按組數據幀的處理(即split apply combine analysis)。例如,在這裏我們發現在所有批次的每個參數的平均值,其data.table

library(data.table) 
DT <- data.table(myCapFull) 
DT[, mean(Value), by=Param] 
# Param  V1 
# 1: Len 1.2430 
# 2: Dia 1.9945 
1

如果你不知道LotID的值,您可以訪問數據幀列表與數字索引:

> myCapSplit[[1]] 
    LotID Param Nominal Value 
1 R0001 Len 1.25 1.234 
2 R0001 Dia 2.00 1.979 
> 
> myCapSplit[[2]] 
    LotID Param Nominal Value 
3 R0002 Len 1.25 1.252 
4 R0002 Dia 2.00 2.010