In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
R_beginner
Beiträge: 12
Registriert: Mo Jun 15, 2020 10:42 am

In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Beitrag von bigben »

20% aller Werte per Zufall oder stratifiziert für A, B, C,...?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
R_beginner
Beiträge: 12
Registriert: Mo Jun 15, 2020 10:42 am

Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Beitrag 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.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Beitrag 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.
R_beginner
Beiträge: 12
Registriert: Mo Jun 15, 2020 10:42 am

Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: In einem 'dataframe' 20% der Werte einer Spalte durch NaN ersetzen.

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten