В настоящее время у меня есть фрейм данных, который выглядит так
ИЗМЕНИТЬ НОВОЕ ОБНОВЛЕНИЕ НОВОГО ФРЕЙМА ДАННЫХ
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), который вычисляет процент каждой строки на основе процента от итога в столбце Value
так, например, новый столбец будет иметь
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, поэтому приветствуется любая помощь
Спасибо





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, потому что последняя строка уже содержит сумму столбца Value
Отредактируйте, чтобы предоставить воспроизводимый пример:
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))
Привет, спасибо за помощь, но я все еще не получил правильного результата, какие-либо мысли о том, почему? В настоящее время он говорит, что длина замены короче, чем исходная
Не могли бы вы дать нам тестовый набор данных, например dput(df) и скопируйте / вставьте результаты сюда
отредактировали исходное сообщение, пожалуйста, посмотрите на новый фрейм данных, спасибо
Было бы проще, если бы вы предоставили нам воспроизводимый набор данных, как предлагалось в моем предыдущем комментарии.
Привет, я добавил фактический фрейм данных, который я использую, выше - реальный фрейм данных, который я использую, спасибо
не могли бы вы опубликовать результаты dput. Это хорошая практика для вопроса, связанного с R;)
Извините, я не могу сейчас отправиться в путь, если бы вы могли посоветовать мне лучший способ вычислить процентное соотношение, которое было бы действительно полезно
Команда, которую я опубликовал в своем ответе, должна работать с фреймом данных, который вы определили в своем вопросе.
Он выводит столбец NA
это должно быть довольно прямолинейно, просто разделив значения на общую сумму в новый столбец - я пробовал несколько вещей, но без решения!
Полагаю, ваш столбец «Ценность» - это факторы. Сделайте df $ Value <- as.numeric (as.character (df $ Value)) перед применением другой функции
Привет, Николас, я обнаружил проблему, в новом наборе данных есть новая 7-я строка со значением, установленным как NA, поэтому я не могу применить то, что вы написали, есть ли способ передать NA, чтобы это работало?
Попробуйте
df$Percentage <- paste0(df$Value/100*100, "%")