[英]R: how do I programmatically loop through a split data frame
我有一个数据集,其中一系列批次的数据按列顺序存储,每个批次(也是按顺序)给出多个参数。 该文件如下所示:
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 的新手,这真的是我第一次在现实世界中应用它,因此非常感谢任何帮助。
如果您不知道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
也许您正在寻找subset
?
subset(myCapFull, Param=="Dia" & LotID == "R0001")
# LotID Param Nominal Value
# 2 R0001 Dia 2 1.979
或者,您可以查看[.data.frame
文档以获取有关如何进行子集化的更多信息,或data.table
、 dplyr
或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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.