Ich bin ein Anfänger bei R, und versuchen, einen Datenrahmen (MSdatanew) mit ifelse zu reinigen. Ich möchte eine Variable E2_new so ändern, dass sie, wo immer sie als "< 0.057" codiert wurde, jetzt als "0,57" codiert ist. Aber wo immer es nicht als "< 0.057" codiert ist, wollte ich, dass es wie ursprünglich codiert bleibt.Probleme mit der Reinigung eines Datenrahmens mit ifelse
MSdataclean<-MSdatanew
MSdataclean$E2_new <- ifelse(MSdataclean$E2_new=="<0.057",0.057,MSdataclean$E2_new)
Das Ergebnis daraus ist, dass die Variable E2_new selbst verändert wird, wo es nicht „< 0,57“
warhead(MSdatanew$E2_new)
[1] 0.102 <0.057 2.797 11.226 5.156 10.032
46 Levels: <0.057 >30 0.058 0.080 0.094 0.102 0.109 0.124 0.136 0.147 ... 9.711
head(MSdataclean$E2_new)
[1] 6.000 0.057 26.000 19.000 32.000 18.000
Irgendwelche Vorschläge auf, was ich falsch mache?
Hey - wie cool das ist !! Danke - es funktioniert super! Haben Sie irgendwelche Gedanken, warum der ifelse-Ansatz nicht funktioniert? –
Beide Ansätze haben für das von mir berichtete Problem funktioniert. Aber eine andere Variable hatte einen zweiten Fehler (Werte von "> 30"). Ich habe es vielleicht falsch ausgeführt, aber als ich wieder mit sub() versuchte, um das zu lösen, hatte die erste sub() - Korrektur bereits die "> 30" in NA geändert. Mit dem Level-Ansatz konnte ich jedoch jedes Problem isolieren –