Evolving notes, images and sounds by Luis Apiolaza

Category: r (Page 20 of 20)

R pitfall #1: check data structure

A common problem when running a simple (or not so simple) analysis is forgetting that the levels of a factor has been coded using integers. R doesn’t know that this variable is supposed to be a factor and when fitting, for example, something as simple as a one-way anova (using lm()) the variable will be used as a covariate rather than as a factor.

There is a series of steps that I follow to make sure that I am using the right variables (and types) when running a series of analyses. I always define the working directory (using setwd()), so I know where the files that I am reading from and writing to are.
Continue reading

All combinations of levels for two factors

There are circumstances when one wants to generate all possible combinations of levels for two factors. For example, factor one with levels ‘A’, ‘B’ and ‘C’, and factor two with levels ‘D’, ‘E’, ‘F’. The function expand.grid() comes very handy here:

combo <- expand.grid(factor1 = LETTERS[1:3], factor2 = LETTERS[4:6])
combo

factor1 factor2
1       A       D
2       B       D
3       C       D
4       A       E
5       B       E
6       C       E
7       A       F
8       B       F
9       C       F

Omitting the variable names (factor1 and factor 2) will automatically name the variables as Var1 and Var2. Of course we do not have to use letters for the factor levels; if you have defined a couple of factors (say Fertilizer and Irrigation) you can use levels(Fertilizer) and levels(Irrigation) instead of LETTERS...

“Not in” in R

When processing data it is common to test if an observation belongs to a set. Let’s suppose that we want to see if the sample code belongs to a set that includes A, B, C and D. In R it is easy to write something like:

inside.set <- subset(my.data, code %in% c('A', 'B', 'C', 'D'))

Now, what happens if what we want are the observations that are not in that set? Simple, we use the negation operator (!) as in:

outside.set <- subset(my.data, !(code %in% c('A', 'B', 'C', 'D')))

In summary, surround the condition by !().

Newer posts »

© 2024 Palimpsest

Theme by Anders NorenUp ↑