Dienstag, Dezember 10, 2019

Die Begrenzung der Anzahl der Dezimalstellen in einen dataframe (R)

Ich möchte, um die Anzahl der Dezimalstellen, wenn ein Daten-frame importiert. Meine .txt-Eingang 16 Nachkommastellen für jede Zeile in collumn „Wert“. Mein dataframe Aussehen:

Value 

0.202021561664556
0.202021561664556
0.202021561664556
0.202021561664556
...

Voraussichtlich meine dataframe

Value
0.20202156
0.20202156
0.20202156
0.20202156
...

Echten Eingang (DF), die nicht funktioniert:

DF <- "NE001358.Log.R.Ratio
    -0.0970369274475688
    0.131893549586039
    0.0629266495860389
    0.299559132381831
    -0.0128804337656807
    0.0639743960526874
    0.0271669351886552
    0.322395363972391
    0.179591292893632"

DF <- read.table(text=DF, header = TRUE)
InformationsquelleAutor user3091668 | 2014-04-22

3 Kommentare

  1. 13

    Hier is.num ist TRUE für numerische Spalten und FALSE sonst. Dann wenden wir round um die numerische Spalten:

    is.num <- sapply(DF, is.numeric)
    DF[is.num] <- lapply(DF[is.num], round, 8)

    Wenn das, was Sie meinte, war nicht, dass Sie Sie brauchen, um den Daten-frame, sondern nur, dass Sie wollen, um den Daten-frame zu 8-stellig, dann ist es einfach:

    print(DF, digits = 8)
    • Diese änderung ist genug?
    • Nun, Sie code funktioniert… ich verstehe wirklich nicht, warum es nicht funktioniert in meinem real Daten
    • Kann ich die Begrenzung der Zeichen in einer Zeile auf eine andere Weise?
    • formatC, prettyNum und sprintf sind Funktionen zur Umwandlung von zahlen in formatierte Zeichenketten.
    • Ich fand einen nicht numerischen Wert in DF… Das ist die Ursache vielleicht. Wenn ich will, halten diese Saiten und etwas dagegen tun, Dezimalzahlen, was kann ich tun? Ich danke Ihnen sehr!
    • as.numeric konvertiert einen string zu numerisch.
    • Warum verwenden Sie sapply() einmal und lapply() weiter. Warum nicht verwenden Sie sapply wieder statt lapply? Es funktioniert so oder so. Irgendein besonderer Grund für die Verwendung von lapply, wenn die gewünschte Ausgabe-Daten-frame?
    • Da is.num ist ein numerischer Vektor, und DF ist ein Daten.frame (das ist eine Liste).

  2. 4

    Einen dplyr Lösung mit mutate_if um zu überprüfen, ob die Spalten in der aktuellen Daten-frame sind numeric dann gelten die round() – Funktion, um Ihnen

    # install.packages('dplyr', dependencies = TRUE)
    library(dplyr)
    
    DF <- DF %>% 
      mutate_if(is.numeric, round, digits = 8)
    DF
    
    #>   NE001358.Log.R.Ratio
    #> 1          -0.09703693
    #> 2           0.13189355
    #> 3           0.06292665
    #> 4           0.29955913
    #> 5          -0.01288043
    #> 6           0.06397440
    #> 7           0.02716694
    #> 8           0.32239536
    #> 9           0.17959129

    Erstellt am 2019-03-17 durch die reprex Paket (v0.2.1.9000)

  3. 0

    nur werfen eine Kopie dieser in den Pfad zu Ihrem Projekt in eine utils
    directory und source wird es, wenn Sie Ihr Skript ausführen soll

    "formatColumns" <-
     function(data, digits)
     {
        "%,%" <- function(x,y)paste(x,y,sep="")
        nms <- names(data)
        nc <- ncol(data)
        nd <- length(digits)
        if(nc!=nd) 
          stop("Argument 'digits' must be vector of length " %,% 
               nc %,% ", the number of columns in 'data'.")
        out <- as.data.frame(sapply(1:nc, 
                             FUN=function(x, d, Y)
                             format(Y[,x], digits=d[x]), Y=tbl, d=digits))
        if(!is.null(nms)) names(out) <- nms
        out
    }

    Nun können Sie sich zurücklehnen und entspannen

    formatColumns(MyData, digits=c(0,2,4,4,4,0,0))

    et cetera et cetera et cetera

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...