2015-07-26 15 views
6

questo è i miei datimodifica del valore di percentuale di fila in R

A B C 
A 9 1 0 
B 2 2 2 
C 3 3 3 

voglio ottenere la percentuale di ogni riga

i miei si aspettano i dati vengono

 A B C 
A 0.9 0.1 0 
B 0.33 0.33 0.33 
C 0.33 0.33 0.33 

ho fatto i miei dati con 'dcast' e c'è il nome della colonna su A, B e C. quindi in realtà i miei dati reali sono

Name A B C 
1 A 0.9 0.1 0 
2 B 0.33 0.33 0.33 
3 C 0.33 0.33 0.33 

risposta

11

sembra un caso equo per

df/rowSums(df) 
#   A   B   C 
# A 0.9000000 0.1000000 0.0000000 
# B 0.3333333 0.3333333 0.3333333 
# C 0.3333333 0.3333333 0.3333333 

Se non si desidera così tante cifre dopo il punto impostato options(digits = 2) o utilizzare print(df/rowSums(df), digits = 2) o utilizzare round

round(df/rowSums(df), 2) 
#  A B C 
# A 0.90 0.10 0.00 
# B 0.33 0.33 0.33 
# C 0.33 0.33 0.33 

O come suggerito da @akrun

round(prop.table(as.matrix(df1),1),2) 
+1

È possibile includere anche 'round (prop.table (as.matrix (df1), 1), 2)' questa opzione – akrun

+0

@akrun perché hai eliminato la tua soluzione? –

+0

problema con la struttura dei dati. come rimuovere il nome della colonna? –

Problemi correlati