# [R] Comparing Variables and Writing a New Column

Jerry Floren jerry.floren at state.mn.us
Mon Feb 1 19:35:11 CET 2010

```Hi David,

Once again, thanks for your help. I still need some help. My original post
was quite simplified, and perhaps that was a mistake.

Here is the actual code and screen output from R:

# Set the working directory

setwd("C:\\Documents and Settings\\jfloren\\My Documents\\TestRSoil")

# Read from the table generated in step 1

sep = "\t")

attach(labinfo)

soil = data.frame(NAPT_ID, Date_Recd, Soil, Primary_A, Anlysis,
Anlysis_Soil, Unit, Results, count, minall, maxall, amed, rndmedian, aMAD,
rndMAD, rndNoF, rndm4, rndm2, rndp2, rndp4, rndavg, rndsd)

detach(labinfo)
attach(soil)

# NOTE: Here is the soil data frame. This is from another table that has
>
> str(soil)
'data.frame':   9563 obs. of  22 variables:
\$ NAPT_ID      : Factor w/ 27 levels "13003","14001",..: 26 16 25 12 9 5 17
14 20 19 ...
\$ Date_Recd    : Factor w/ 46 levels "1/0/00","10/15/2008",..: 9 9 9 2 10 3
7 11 9 12 ...
\$ Soil         : Factor w/ 21 levels "2008-116","2008-117",..: 1 1 1 1 1 1
1 1 1 1 ...
\$ Primary_A    : Factor w/ 9 levels "Bases","Buffer pH, Lime Req.",..: 1 1
1 1 1 1 1 1 1 1 ...
\$ Anlysis     : Factor w/ 32 levels "Anlysis","B",..: 5 5 5 5 5 5 5 5 5 5
...
\$ Anlysis_Soil: Factor w/ 611 levels "Anlysis_Soil",..: 2 2 2 2 2 2 2 2 2 2
...
\$ Unit         : Factor w/ 4 levels "%","(dS/m)","mg/kg",..: 3 3 3 3 3 3 3
3 3 3 ...
\$ Results      : Factor w/ 3796 levels "0.05","0.06",..: 887 456 567 574
575 603 614 626 627 641 ...
\$ count        : Factor w/ 19 levels "10","11","12",..: 12 12 12 12 12 12
12 12 12 12 ...
\$ minall       : Factor w/ 477 levels "0.05","0.06",..: 150 150 150 150 150
150 150 150 150 150 ...
\$ maxall       : Factor w/ 516 levels "0.12","0.17",..: 115 115 115 115 115
115 115 115 115 115 ...
\$ amed         : Factor w/ 552 levels "0.1","0.105",..: 133 133 133 133 133
133 133 133 133 133 ...
\$ rndmedian    : Factor w/ 531 levels "0.1","0.11","0.13",..: 122 122 122
122 122 122 122 122 122 122 ...
\$ aMAD         : Factor w/ 433 levels "0.00499999999999989",..: 193 193 193
193 193 193 193 193 193 193 ...
\$ rndMAD       : Factor w/ 341 levels "0","0.01","0.02",..: 107 107 107 107
107 107 107 107 107 107 ...
\$ rndNoF       : Factor w/ 335 levels "0.2","0.9","1",..: 108 108 108 108
108 108 108 108 108 108 ...
\$ rndm4        : Factor w/ 537 levels "-0.04","-0.05",..: 533 533 533 533
533 533 533 533 533 533 ...
\$ rndm2        : Factor w/ 529 levels "-0.04","-0.1",..: 126 126 126 126
126 126 126 126 126 126 ...
\$ rndp2        : Factor w/ 554 levels "0.13","0.14",..: 143 143 143 143 143
143 143 143 143 143 ...
\$ rndp4        : Factor w/ 545 levels "0.15","0.16",..: 151 151 151 151 151
151 151 151 151 151 ...
\$ rndavg       : Factor w/ 561 levels "0.1","0.11","0.13",..: 127 127 127
127 127 127 127 127 127 127 ...
\$ rndsd        : Factor w/ 416 levels "0.02","0.03",..: 256 256 256 256 256
256 256 256 256 256 ...
>
# NOTE: Original posting -4MAD is rndm4 (col 17); -2.5MAD is rndm2 (col 18);
+2.5MAD is rndp2 (col 19); +4MAD is rndp4 (col 20). I changed the columns to
17:18 in the following as.numeric code you supplied:

>
> df.soil\$a_flag <- apply(df.soil, 1, function(.x)
+           switch(findInterval(.x[3], as.numeric( c(-Inf,.x[17:20],Inf)) ),
+                                           "**L", "*L", " ", "*H",
+ "**H") )
Error in apply(df.soil, 1, function(.x) switch(findInterval(.x[3],
as.numeric(c(-Inf,  :
>

# End of R code with the error message "object 'df.soil' not found"

I also thought that perhaps "df.soil" was an abbreviation for
"data.frame.soil" However, with either "df.soil" or "data.frame.soil", R

Are you able to see what I am doing wrong?

Thanks,

Jerry Floren
Minnesota Department of Agriculture
--
View this message in context: http://n4.nabble.com/Comparing-Variables-and-Writing-a-New-Column-tp1458947p1459112.html
Sent from the R help mailing list archive at Nabble.com.

```