Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....
Moderatoren: EDi , jogo
Selina1
Beiträge: 4 Registriert: Do Jul 01, 2021 5:35 pm
Beitrag
von Selina1 » Sa Jul 03, 2021 5:52 pm
Hallo liebe R Freunde
Eine Frage: Gibt es eine Möglichkeit nur bestimmte NA‘s mit 0 zu ersetzen?
Als Beispiel: Ich will nur die NA‘s mit 0 ersetzen die vor den Werten liegen, hier die ersten drei. Alle anderen NA‘s sollen so bleiben. Das möchte ich gerne auf alle Spalten anwenden (sind über 200).
Bin um jede Hilfe sehr dankbar!
Lieber Gruss
Selina1
Spalte1:
NA
NA
NA
1
2
3
5
7
NA
NA
9
8
7
jogo
Beiträge: 2093 Registriert: Fr Okt 07, 2016 8:25 am
Beitrag
von jogo » So Jul 04, 2021 6:54 am
Hallo Selina,
ja, geht:
Code: Alles auswählen
x <- c(NA, NA, NA, 1, 2, 3, 5, 7, NA, NA, 9, 8, 7)
r <- rle(is.na(x))
if (r$values[1]) x[1:r$lengths[1]] <- 0
Gruß, Jörg
student
Beiträge: 747 Registriert: Fr Okt 07, 2016 9:52 am
Beitrag
von student » So Jul 04, 2021 11:55 am
Hallo Selina,
schau mal
hier und/oder
hier . Vielleich hilft es weiter...
EDi
Beiträge: 1605 Registriert: Sa Okt 08, 2016 3:39 pm
Beitrag
von EDi » So Jul 04, 2021 12:37 pm
Oder sowas:
Code: Alles auswählen
x <- c(NA, NA, NA, 1, 2, 3, 5, 7, NA, NA, 9, 8, 7)
x[seq(1, min(which(!is.na(x))) - 1)] <- 0
x
EDi
Beiträge: 1605 Registriert: Sa Okt 08, 2016 3:39 pm
Beitrag
von EDi » So Jul 04, 2021 12:39 pm
Oder funktionell um über die Spalten zu iterieren:
Code: Alles auswählen
df <- data.frame(x = c(NA, NA, NA, 1, 2, 3, 5, 7, NA, NA, 9, 8, 7))
df$y <- df$x
foo <- function(x) {
x[seq(1, min(which(!is.na(x))) - 1)] <- 0
x
}
foo(df$x)
apply(df, 2, foo)