R:我如何以编程方式循环分割数据帧

时间:2014-02-13 14:51:30

标签: r split dataframe iteration

我有数据集,其中一系列批次的数据按顺序存储在列中,并且每个批次(也按顺序)给出多个参数。该文件看起来像这样:

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,然后再通过Param再次拆分来深入查看我需要的数据,这很棒。这是我正在使用的代码:

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的新手,这是我第一次真实应用它,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

也许您正在寻找subset

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

或者,您可以查看[.data.frame的文档,了解有关如何进行子集的更多信息,或查看data.tabledplyrplyr个数据包以处理数据框按群组(即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