söndag 20 maj 2012

Trikågarn

Jag och N ska är tillsammans med bror påväg till Borås för att köpa en ny bil till honom. Vad passar då bättre än att pröva det nya trikågarnet som jag köpte igår?!

Prövar att göra en brödkorg med virknål 12.

måndag 14 maj 2012

onsdag 9 maj 2012

Olika färger i R

Förut hade jag en kollega som gjorde små R-funktioner åt mig när jag gnällde om att R inte gjorde saker som jag ville. Vill ni bli lika omtyckta som honom, tipsa mig om hur man löser problemet nedan:)

En sak som jag länge tänk på som är irriterande med R är att det är samma färg på output, varnings- och felmeddelanden i konsolen. Detta måste man väll kunna ändra i detta fantastiska program?! Frågan är hur, min snabba sökning på Google hjälpte föga - några tips?

måndag 7 maj 2012

My life is back!

Syster och man är tillbaka efter sin resa från NY vilket betyder att familjen åter består av mig och N! Söta finaste syskonbarn ni är underbara i kvadrat men visst är det härligt att allt är som vanligt igen??!

Känner för att fira men vet inte hur!

onsdag 2 maj 2012

Data till kolumner

En av de få saker jag gillar med Excel är funktionen "data till kolumner". Jag har därför just suttit och programmerat en motsvarande funktion till R (fick ett dataset i behov av en del handpåläggning från en klient).  Och nej, jag vill inte veta om det redan fanns!

Kod nedan. (Skönhetsupplevelse utlovas ej!)



data.to.columns<-function(Oldcol, Separators){
  antal<-nchar(as.character(Oldcol), type="chars")
  maxantal<-max(antal)
  tempframe<-as.data.frame(matrix(NA,length(Oldcol),maxantal))
  new.col<-as.data.frame(matrix(0,length(Oldcol),maxantal))
  col.assign<-as.data.frame(matrix(0,length(Oldcol),maxantal))
    for (i in 1:maxantal){
    tempframe[antal>=i,i]<-substr(Oldcol[antal>=i],i,i)

    for (separators in 1:length(Separators)){
       new.col[!is.na(tempframe[,i])&tempframe[,i]==Separators[separators],i]<-1
    }
    if (i==1){
      col.assign[!is.na(tempframe[,i]),i]<-1}
 
    if (i>1){
    col.assign[!is.na(tempframe[,i]),i]<-new.col[!is.na(tempframe[,i]),i]+col.assign[!is.na(tempframe[,i]),i-1]}
    }

for (i in 1:maxantal){
  col.assign[new.col[,i]==1,i]<-0
}
n.new.col<-max(apply(new.col,1,sum))+1
new.data<-matrix("",length(Oldcol),n.new.col)
for (columns in 1:n.new.col){
  for (i in 1:maxantal){
      new.data[col.assign[,i]==columns,columns]<-(paste(new.data[col.assign[,i]==columns,columns],tempframe[col.assign[,i]==columns,i], sep=""))
    }
  }
new.columns<-as.data.frame(new.data)
return(new.columns)
}

Exempel:


testdata<-c("NA","34+15+Okänt","45+35+NA+17", "2+4", "35 NA" )
data.to.columns(Oldcol=testdata, Separators=c("+"," "))