come estrarre il valore di uscita in R?

come estrarre il valore indice di un risultato in R.

data.frame(sort(table(df$col1),decreasing=TRUE))

ciò si traduce in un output del valore Col1 e il suo conteggio. l’output è il seguente:

          Var1   |    freq
   ---------------------------
    1     ABC    |      10
    2     DEF    |       9
   ...

sto fondamentalmente cercando di estrarre ‘ABC’.

ora credo che il seguente avrebbe funzionato:

x <- data.frame(sort(table(df$col1),decreasing=TRUE))
x[['Var1']][1]

ma vorrei essere in grado di fare questo in una sola linea, se possibile.


aggiornamento Risposta:

di seguito viene visualizzato il più grande valore di Reoccuring in una colonna (Col1):

subset(df,!is.na(df$col1),) %>% count(col1) %>% arrange(desc(n)) %>% c(1)[1]

EN From: How to Extract Value of Output in R?

More similar articles:

23 Comments

  1. sembra che si desidera il più comune col1 valore in df. provare names(sort(table(df$col1, decreasing = TRUE)))[1]

  2. usando il tuo esempio, è possibile in un oneliner, data.frame(sort(table(df$col1),decreasing=TRUE))[['Var1']][1], ma andare direttamente al names è più pulito di convertire la tabella in un frame di dati.

  3. (btw, “indice” di solito significa il numero di riga o colonna. ad esempio, in a, b, c, d, e, l’indice di b è 2. sembra che tu voglia il valore, non l’indice.)

  4. ho provato che.max (table (dat $Col1)) e data.frame (sort (table (df $Col1), decrescente = TRUE)) [[‘Var1’]] [1]. entrambi hanno portato ad un output che mi aspettavo (valore Col1), ma il risultato era un ‘intero’ quindi presumo che l’output si riferisse all’indice del datafame che non è Col1 nel mio caso. ho provato i nomi (ordina (tabella (df $Col1))) [1]. ciò ha portato ad un ‘carattere’ di uscita che è quello che sto cercando. grazie.

  5. grazie jenesaisquoi. lavoro tipicamente in python in modo da sto ancora abituandomi a R. Wasn non informato della funzione ‘dei nomi’, piacevole da sapere.

  6. se si desidera estrarre i valori di una singola colonna usando dplyr pacchetto, è possibile utilizzare select. E.g- df%>%count(col1)%>%arrange(desc(n))%>%select(col1)

    per scoprire l’indice di qualsiasi colonna / attributi & amp; indice di valori in una colonna, è possibile utilizzare which, questa sintassi ha bisogno di un operatore logico e un valore singolo. e.g.- ‘quale (colnames (df) = =’ column _ name ‘), questo vi dà l’indice di quella colonna.

    per trovare l’indice di tutti i valori di quella colonna, questo può essere utilizzato which(df$col1 == 1

    1. funziona fino all’istruzione ‘select (Col1)’. mi dice che ho un argomento inutilizzato (‘Col1’). questo è quello che ho: DF% >% conteggio (‘Col1’)% >% organizzare (desc (freq)% >% selezionare (Col1)

    2. stai usando virgole invertite per Col1 in qualsiasi argomento?? in dplyr, non è necessario utilizzare virgole invertite per un nome di colonna.

    3. OK, questo era il problema. così ora ho un’uscita del tibble. c’è un’altra operazione che posso aggiungere con un operatore di pipe dopo l’istruzione select per selezionare uno specifico valore di indice. dire che voglio il 5 ° valore in quel tibble?

    4. lo ha ottenuto. non so se è il modo migliore, ma funziona: DF% >% conteggio (Col1)% >% organizzare (desc (n))% >% c (1) [1]. grazie mille per questo suggerimento. stavo cercando qualcosa che avrebbe anche mantenere il tipo di dati della colonna. usando la funzione ‘names’ genera sfortunatamente un tipo di carattere. questo è esattamente quello che sto cercando. funziona per qualsiasi tipo di dati, purché non si abbiano valori NA (che è possibile solo sottoinsieme).

  7. dal momento che il risultato di data.frame() è un frame di dati, si può immediatamente utilizzare l’operatore estratto su di esso.

    # generate the data
    x <- c(rep("ABC",10),rep("DEF",9))
    
    # extract string with highest frequency from table 
    data.frame(sort(table(x),decreasing=TRUE))[1,1]

    … e il risultato:

    > data.frame(sort(table(x),decreasing=TRUE))[1,1]
    [1] ABC
    Levels: ABC DEF
    >

    si può usare as.character() per rimuovere i livelli di fattore dal risultato.

    in base ai commenti è necessario ottenere i conteggi per le variabili numeriche, quindi utilizzare il valore numerico originale per sottoinsiemi della cornice dati originale.

    ecco una soluzione che gestisce il requisito aggiuntivo, utilizzando il pacchetto sqldf.

    # SQLDF solution
    library(sqldf)
    x <- data.frame(V1=c(rep(1,10),rep(2,8)),stringsAsFactors=FALSE)
    sqlStmt <- "select V1, count(*) as count from x group by V1"
    y <- sqldf(sqlStmt) 
    
    z <- y[y$count == max(y$count),1]
    class(z)

    … e l’uscita.

    > z <- y[y$count == max(y$count),1]
    > class(z)
    [1] "numeric"

    notare come la classe del risultato finale sia ancora numerica, piuttosto che essere convertita in un fattore o valore di carattere.

    1. questo porta lo stesso problema dei suggerimenti precedenti. utilizzando questo si tradurrà nel valore di interesse, tuttavia l’output effettivo sarà l’indice (Credo). usando un ‘typeof’ su questo risultato in un intero, in modo da presuppongo che è l’indice che è l’uscita reale. specificando ‘as.character’ si ottiene lo stesso nome. si traduce in un tipo di carattere. l’unica soluzione che ho trovato (a meno che non si dispone di un altro suggerimento) che manterrà il tipo di dati è quello che ho aggiornato nella domanda.

    2. @user10939484 stai cercando di estrarre “ABC” o 10? dalla domanda, sembra che si voleva estrarre “ABC”, che è il motivo per cui ho postato la risposta che ho fatto.

    3. Lei è corretto, tuttavia, e ho parlato male prima, mi dispiace. ho pensato che la risposta aggiornata era esattamente quello che volevo, ma non del tutto. in questo momento, ho circa 10 modi diversi per ottenere la risposta che sto cercando… che è ‘ABC’, ma nessuno degli output mantengono il datatipe della colonna. qualche suggerimento?

    4. @user10939484 – Si prega di spiegare l’importanza di conoscere il tipo di dati originali della colonna? non è chiaro dalla domanda originale.

    5. dire che voglio utilizzare questo particolare valore per sottoinsiemi del datafame o eseguire un’operazione. ho impostato la tua riga di codice (o una delle altre) uguale ad una variabile ‘x’. il seguente non funzionerebbe allora: sottoinsieme (df, Col1 = = x,). ecco perché sto cercando di mantenere il tipo di dati originale. non pensavo che avrei avuto questo molto problema cercando di realizzare questo onestamente.

    6. OK, se stai cercando di utilizzare il valore numerico originale per sottoinsiemi dei dati, possiamo utilizzare il pacchetto sqldf per realizzare ciò che stai cercando. posterò un’altra soluzione che illustra come potete mantenere un numerico di valore numerico dopo l’aggregazione ai conteggi.

    7. per curiosità, c’è qualcosa che sai che può realizzare quello che sto cercando al di fuori di sqldf. stavo per provare che se tutto il resto non è riuscito. ma se è l’unico modo, così sia. mi sento come questo è qualcosa R dovrebbe essere in grado di molto facilmente. e ‘estremamente semplice da fare in pitone.

    8. DF [‘Col1’] .value _ contents () .index.values [1] .Questo mantiene il tipo di dato originale del valore restituito.

Leave a Reply

Your email address will not be published. Required fields are marked *