R условная строка Суммы для замены на суммы в процентах

Я ищу условно rowSums, если эти строки представляют 1% данных, а затем заменяю исходные значения на rowSums. * Бонус, если таблица может включать количество строк, суммированных в столбце имени (например, Другое (n = 2)). Это небольшая часть гораздо более крупной функции. См. Пример ниже:

Пример данных:

name Year1 Year2 Year3 Total Percent
John 1 2 1 4 0.7029877
Paul 230 100 150 480 84.358524
George 41 30 10 81 14.235501
Ringo 2 1 1 4 0.7029877
# Code for example data
name <- c("John", "Paul", "George", "Ringo")
Year1 <- c(1, 230, 41, 2)
Year2 <- c(2, 100, 30, 1)
Year3 <- c(1, 150, 10, 1)
df <- data.frame(name, Year1, Year2, Year3)
df$Total <- rowSums(select(df,Year1:Year3))
df$Percent <- df$Total/sum(df$Total)*100

В этом решении Джон и Ринго будут объединены в одно решение «Другое», поскольку оба имеют процент <1.

# Code for example solution
name <- c("Paul", "George", "Other(n=2)")
Year1 <- c(230, 41, 3)
Year2 <- c(100, 30, 3)
Year3 <- c(150, 10, 2)
df2 <- data.frame(name, Year1, Year2, Year3)
df2$Total <- rowSums(select(df2,Year1:Year3))
df2$Percent <- df2$Total/sum(df2$Total)*100

Пример решения:

name Year1 Year2 Year3 Total Percent
Paul 230 100 150 480 84.358524
George 41 30 10 81 14.235501
Other(n=2) 3 3 2 8 1.405975

person user9351962    schedule 18.02.2021    source источник


Ответы (1)


person    schedule
comment
Спасибо!! Я никогда не слышал о fct_lump (), спасибо, что познакомили меня с ней! - person user9351962; 18.02.2021