Вычисление процентов в кадре данных R на основе итогов? - PullRequest
0 голосов
/ 26 апреля 2018

У меня в настоящее время есть фрейм данных, который выглядит так

РЕДАКТИРОВАТЬ НОВОЕ ОБНОВЛЕНИЕ НОВОЙ ДАННОЙ КАДРЫ

    Country    Information  Value 
    UK         Cars         50 
    UK         Sheep        20
    UK         Cats         15
    UK         Dogs         10 
    UK         Shoes        3
    UK         Hats         2
    Total                   100

Столбец «Страна» повторяется 6 раз, а последняя строка называется «Итого», «Информация представляет собой просто случайную информацию», а «Значение» являются числовыми, они суммируются до 100 и располагаются в порядке убывания от самого высокого до самого низкого значения

Я хотел бы найти способ в R добавить новый столбец (df $ Percentage), который вычисляет процент каждой строки на основе процентного отношения к итогу в столбце Значение

так, например, новый столбец будет иметь

Country    Information  Value     Percentage 
    UK         Cars         50     0.50 (or can be 50%)
    UK         Sheep        20     0.20 
    UK         Cats         15     0.15
    UK         Dogs         10     0.10
    UK         Shoes        3      0.03
    UK         Hats         2      0.02
    Total                   100    1.00 (or nothing here)

и т. Д., Чтобы достичь конца кадра данных, где TOTAL либо будет пустым (при условии, что процентная доля остановилась там или будет равна 1)

Я довольно новичок в R, поэтому любая помощь приветствуется

Спасибо

1 Ответ

0 голосов
/ 26 апреля 2018
df$percentage <- df$Value/(sum(df$Value)/2)
#results
  Country Information Value percentage
1      UK        Cars    50       0.50
2      UK       Sheep    20       0.20
3      UK        Cats    15       0.15
4      UK        Dogs    10       0.10
5      UK       Shoes     3       0.03
6      UK        Hats     2       0.02
7   Total               100       1.00

Я разделил сумму на 2, потому что последняя строка уже содержит сумму столбца Значение


Изменить, чтобы обеспечить воспроизводимый пример:

structure(list(Country = c("UK", "UK", "UK", "UK", "UK", "UK", 
"Total"), Information = c("Cars", "Sheep", "Cats", "Dogs", "Shoes", 
"Hats", ""), Value = c(50, 20, 15, 10, 3, 2, 100)), .Names = c("Country", 
"Information", "Value"), class = "data.frame", row.names = c(NA, 
-7L))
...