[R] group by

Hans-Juergen Eickelmann EICKELMA at de.ibm.com
Fri Dec 1 16:22:00 CET 2006


Dear R-community,


I started using R  to control yield and output from different factories by
production week. A typical example is below.

Location    Week  ShippedWafer      SortedWafer UnsortedWafer
WaferYield  GoodDie
A           47    9           4           5           0.476       -12
B           40    5           5           0           -0.3262           -9
B           48    2           1           1           5.092       18


This output was generated from the following sample data. The complete list
can have more than 5K rows

TransactionWeek   Shipdate    Partnumber  Testside    Lot         Wafer1
      Wafer2            Yieldnorm   Chipnorm
47                11/20/2006  SWN3        A           12WAC00
3LU105SOG6  3LU105SOG6  17.231            60
47                11/20/2006  SWN3        A           12WAC00
3LU108SOE6  NA          NA          NA
40                10/3/2006   WN30        B           0ZQNC00
3XM063SOA1  3XM063SOA1  3.146       -12
40                10/3/2006   WN30        B           0ZQNC00
3XM072SOA3  3XM072SOA3  9.536       29

I'm a newbee so I'm doing this step by step. 1st Site A,  than siteB and
combine this with rbind to C<-rbind(A,B);
This code works however finally I would like to break up the data even more
and split it to Site, Week, Partnumber and Lot and here I'm lost.

Is there a 'grouping by' function in R which allows this operation much
easier without 'hardwiring' the parameter like I did it?


Code siteA
Weekmin <- min(ship$TransactionWeek);
Weekmax <- max(ship$TransactionWeek);
Week <-Weekmin -1;

repeat{
Week <- Week +1;
ship1  <- subset(ship, ship$TransactionWeek == Week &ship$Testside %in%
c("A"));
ship2 <- subset(ship1,ship1$Yield != 0 );
ship3 <- subset(ship1,is.na(ship1$Yield));

Location <- "A";
ShippedWafer <- nrow(ship1);
SortedWafer <- nrow(ship1)-nrow(ship3);
UnsortedWafer <- nrow(ship3);
WaferYield <- mean(ship2$Yieldnorm, na.rm=TRUE);
GoodDie <- sum(ship1$Chipnorm, na.rm=TRUE);
assign(paste("week", Week, sep="."), data.frame(Location, Week,
ShippedWafer,
      SortedWafer, UnsortedWafer, WaferYield,GoodDie))
if (Week == Weekmin) next
line <- rbind(get(paste("week", Week-1, sep=".")),get(paste("week", Week,
sep=".")))
assign(paste("week", Week, sep="."), data.frame(line))

if (Week < Weekmax)next
if (Week == Weekmax) break
}
A <- data.frame(get(paste("week", Week, sep=".")));

Hans

Hans-J Eickelmann
ISC Technology Procurement Center Mainz, Germany
email : Eickelma at de.ibm.com
phone : +49-(0)6131-84-2516
mobile: +49-(0)170-632-5596




More information about the R-help mailing list