Hello,

Try the following.

# make up some data
dds <- 1e3
nc <- 10
xss <- data.frame(matrix(runif(nc*dds, min=-1, max=1), ncol=nc))
names(xss) <- paste0("xs", 1:10)

# two functions with descriptive names
getControlLimits <- function(x, L = 3){
    mu <- mean(x)
    sigma <- sd(x)
    c(lcl = mu - L*sigma, ucl = mu + L*sigma)
}

countOutOfControl <- function(x, L = 3){
    cl <- getControlLimits(x, L = L)
    sum( x < cl["lcl"] | x > cl["ucl"] )
}

sapply(xss, getControlLimits)    # To know why the next returns all zeros
sapply(xss, countOutOfControl)    # No values outside control limits


The data comes from an uniform in the interval (-1, 1) therefore the sd is sqrt(1/3) = 0.577. Times 3 gives values for lcl and ucl clearly below and above -1 and 1, respectively. (I've tried rnorm and the counts were not zero.)
But this is just a data example to see if the code works, and it does.

Hope this helps,

Rui Barradas

Em 30-07-2012 22:04, Wellington Silva escreveu:
Ok Rui,

I'll try to explain myself a little bit better.

I have 10 columns, with 1000 rows each. (Each column represents a variable
of the process)

these columns were simulated using runif, with values between 4 and 6.

I need to calculate the control limits for each column (variable), and
verify if they are within the bounds accepted.

For now, I'm reading these columns separately, I'm creating variables to
read only one of the each column, and then check if the values in this
column is within the limits or not.

PS. All these columns originally come from a dataframe. something like
this: (dds = 1000)

xs1<-runif(dds, min=-1, max=1)
xs2<-runif(dds, min=-1, max=1)
xs3<-runif(dds, min=-1, max=1)
xs4<-runif(dds, min=-1, max=1)
xs5<-runif(dds, min=-1, max=1)
...
xs10<-runif(dds, min=-1,max=1)
xs<-data.frame(xs1,xs2,xs3,xs4,xs5,..xs10)

_____________________________________________


#Reading columns (first one)
c.n1 <- 'xs1'
c1 <- with(xss, get(c.n1))
#Mean
mc1 <- mean (c1)
#Standard deviation
sdc1 <- sd(c1)
#Control Limits
L=3
uclc1 = mc1 + L*sdc1
lclc1 = mc1 - L*sdc1


I need an "if" inside a loop to do the following:

for (each column)

if (value in c1 < lclc1 | value in c1 > uclc1) {Count how many values are
outside the bounds}

And I need this process to be repeated to all columns.




2012/7/30 Rui Barradas <ruipbarra...@sapo.pt>

Hello,

Your code example doesn't make much sense, it needs decrypting. Let's see,

for(k in 1:length(c1)){
     if(c1[k] < lcl | c1[k] > ucl) {do something}
}

If this is it, then you can completely avoid the loop:

i1 <- c1 < lcl | c1 > ucl       # create an index vector
out.of.control <- c1[ i1 ]    # save the values

When you say you have a column, is it a matrix column? data.frame?
Give a data example with

dput( head(myData, 20) )   # paste the output of this in a post

Hope this helps,

Rui Barradas

Em 29-07-2012 21:59, Wellington G. Silva escreveu:

Hi,


I'm Wellington from Brazil and I have the following issue:


I've been working on a project a for a while, and I'm having trouble in
using the loop (for)


I need to read a column (c1), and for each value of this column, I need to
check if it's within the control limits


So, I was trying to do this:


For (k in 1: c1)


If (c1< lcl1 | c1 > ucl1) {here I need to store the values outside the
limits)


I have 5 columns, need to do the same process in each one of them.


And later on I'm gonna concatenate these 5 vectors and calculate its mean
for an ARL project.






         [[alternative HTML version deleted]]

______________________________**________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
PLEASE do read the posting guide http://www.R-project.org/**
posting-guide.html <http://www.R-project.org/posting-guide.html>
and provide commented, minimal, self-contained, reproducible code.




______________________________________________
R-help@r-project.org 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.

Reply via email to