group by
Hi Hans, The short answer is yes. I suspect you need to look at the 'by', 'tapply' or 'aggregate' functions, depending upon what your data type is, exactly. In general, it's best to come up with a really simple example which illustrates the part you don't know how to do. If you can do that, someone will be able to come up with a simple solution. -Alex Brown
On 1 Dec 2006, at 15:22, Hans-Juergen Eickelmann wrote:
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
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting- guide.html and provide commented, minimal, self-contained, reproducible code.