Mittwoch, 12. November 2008

Als Faktor erkannte Datums-Variablen in Datum umwandeln

Datums-Angaben werden beim Laden oft als Faktor interpretiert.
Die Umwandlung in Datums-Format geht leichter, wenn die Feldnamen mit dem Suffix _d enden.

for( x in names(d.set)[ grep( "_d$", names(d.set) ) ] ) {
d.set[,x] <- as.Date( d.set[,x], "%d.%m.%Y" )
}

Freitag, 7. November 2008

Plot-Basics

















x.i <- 1:10; y.i <- 1/x.i

plot( y=y.i, x=x.i, cex.axis=0.8, yaxt="n", pch=15, col="red", ylab="", xlab="x-Werte", main="Titel" )

points( y=y.i/2, x=x.i, pch=1:10, col="blue" )

abline( h=seq(0,max(y.i),0.1), col="grey", lty="dotted")

segments( y0=y.i-0.1, y1=y.i+0.1, x0=x.i, x1=x.i )

axis( side=2, at=seq(0,1,0.1), labels=seq(0,1,0.1), cex.axis=0.8, las=2 )

legend( x="topright", inset=0.02, legend=c("y1-Werte", "y2-Werte"), col=c("red","blue"), pch=c(15,1), bg="white", cex=0.8 )

text( x=x.i+0.2, y=y.i, labels=paste("n=",round(y.i,1),sep=""), cex=0.8, adj=0 )

mtext( side=3, at=x.i, line=0.5, text=paste( "x=",x.i, sep=""), cex=0.8 )

savePlot( filename="d:/myplot.png", type="png" )

Montag, 27. Oktober 2008

Faktoren kreuzen

Um ein data.frame mit dem kompletten Satz an Kombinationen von Ausprägungen mehrerer Faktoren zu erzeugen, kann expand.grid(...) verwendet werden.

sex_c <- c("m","w")
reg <- c("ZH","UR","VS","GR")
prod <- c("BASIS","SANA","HUV")

expand.grid(sex_c, reg, prod)
Var1 Var2 Var3
1 m ZH BASIS
2 w ZH BASIS
3 m UR BASIS
4 w UR BASIS
etc.

Um Kombinationen (ohne Beachtung der Reihenfolge) zu betrachten, gibt es die Funktion combn(...).

combn( letters[1:4], 2)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a" "a" "a" "b" "b" "c"
[2,] "b" "c" "d" "c" "d" "d"

Zweier Kombinationen können auch schnell gefunden werden mit:
m <- outer(letters[1:5], LETTERS[1:5], paste, sep="-")
m[lower.tri(m)]

Variationen eines Vektors können wie folgt bestimmt werden:

v <- 1:3
x <- expand.grid( v, v, v )
# entferne Zeilen aus x, in denen Elemente mehrfach vorkommen
x <- x[ apply( x, 1, FUN=function(x){ sum(duplicated(x)) } )==0, ]
# .. und sortiere noch sinnvoll
x <- x[ order(x[,1],x[,2],x[,3]), ]

x
Var1 Var2 Var3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1