2015-07-26 2 views
6

это мои данныезначение изменения в процентах строки в R

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

Я хочу, чтобы получить процент от каждой строки

Мои ожидают данные

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

Я сделал свои данные с 'dcast', и есть имя столбца на A, B и C. , так что фактически мои реальные данные

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 

ответ

11

Кажется справедливый случай для

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 

Если вы не хотите так много цифр после точки установить options(digits = 2) или использовать print(df/rowSums(df), digits = 2) или использовать 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 

Или как это было предложено @akrun

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

Вы также можете включить 'round (prop.table (as.matrix (df1), 1), 2)' this option – akrun

+0

@akrun Почему вы удалили свое решение? –

+0

проблема с структура данных. как удалить имя столбца? –

Смежные вопросы