Seite 1 von 1
In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.
Verfasst: Mo Jun 15, 2020 10:54 am
von R_beginner
Hallo zusammen,
Bis jetzt habe ich einen data.frame erstellt und diesen in das 'tidy' Tabellenformat gebracht.
ID <- c(1:28)
A <- rnorm(n=28,mean=5.5,sd=2.8)
B <- rnorm(n=28,mean=-2.5,sd=2.5)
C <- rnorm(n=28,mean=-1,sd=2.5)
D <- rnorm(n=28,mean=2,sd=2.5)
data <- data.frame(ID, A, B, C, D)
tidydata <- gather(data,treat,outcome,2:5)
Jetzt sollen aus tidydata 10% ; 20% und 30% der Werte in der Spalte outcome durch NaN ersetzen werden.
Kann mir dabei jemand helfen??
Welche Funktion eignet sich dafür?
Vielen Dank schon jetzt
Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.
Verfasst: Mo Jun 15, 2020 12:24 pm
von bigben
20% aller Werte per Zufall oder stratifiziert für A, B, C,...?
Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.
Verfasst: Mo Jun 15, 2020 1:08 pm
von R_beginner
bigben hat geschrieben: Mo Jun 15, 2020 12:24 pm
20% aller Werte per Zufall oder stratifiziert für A, B, C,...?
Ich würde gerne 10, 20 und 30 % der Werte zufällig löschen. Diese Werte möchte ich dann über eine multiple Imputation wieder auffüllen. Dafür werde ich wahrscheinlich das R Packet Amelia nutzen.
Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.
Verfasst: Mo Jun 15, 2020 1:18 pm
von jogo
Code: Alles auswählen
i <- sample.int(nrow(tidydata), 0.1*nrow(tidydata)) ## oder 0.2*... oder 0.3*...
tidydata$outcome[i] <- NaN
Gruß, Jörg
p.s.:
Ich hätte eher NA statt NaN genommen.
Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.
Verfasst: Mo Jun 15, 2020 1:25 pm
von R_beginner
jogo hat geschrieben: Mo Jun 15, 2020 1:18 pm
Code: Alles auswählen
i <- sample.int(nrow(tidydata), 0.1*nrow(tidydata)) ## oder 0.2*... oder 0.3*...
tidydata$outcome[i] <- NaN
Gruß, Jörg
p.s.:
Ich hätte eher NA statt NaN genommen.
Super!! Vielen Dank für die schnelle Antwort!!
Gruß Robert
Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.
Verfasst: Mo Jun 15, 2020 2:21 pm
von bigben
Als Fußnote darf ich vielleicht noch ergänzen, dass der Befehl "gather" im Zustand "retired" ist und dass die tidyverse-Autoren empfehlen, zukünftig auf pivot_longer zu wechseln:
For some time, it’s been obvious that there is something fundamentally wrong with the design of spread() and gather(). Many people don’t find the names intuitive and find it hard to remember which direction corresponds to spreading and which to gathering. It also seems surprisingly hard to remember the arguments to these functions, meaning that many people (including me!) have to consult the documentation every time.
https://tidyr.tidyverse.org/articles/pivot.html
Das macht die Benutzung von gather nicht falsch, aber wenn Du mit R anfängst und mit dem tidyverse einsteigst, dann lohnt es sich vielleicht, gleich die aktuellere Variante zu lernen.
LG,
Bernhard