2016-11-09 1 views
0

나는 100 %와 같게 만들고 싶은 R의 비율을 가지고 있습니다. 개별 백분율을 가장 가까운 정수로 사용해야합니다.반올림 비율을 100 %로 R

저는 반올림 비율 [20.5, 50.6, 25.8, 3.1]을가집니다. 그런 다음 가장 가까운 정수 [20,50,25,3]로 반올림합니다. 개별 소수점 [0.5,0.6,0.8. 0.1]. 그런 다음 내림차순으로 소수점 정렬하지만 출력은 [3,2,1,4]입니다. 그리고 내가 100에 도달 할 때까지 가장 작은 소수점 이하의 정수에 1을 더해야합니다.

+0

'? round'을보세요 – Nate

+0

정확히 무슨 뜻인지 재현 할 수있는 예가 있습니까? – cdeterman

+0

샘플 데이터 세트와 지금까지 시도한 코드를 추가하십시오. – HubertL

답변

2

정말로 사소한 문제로 보일 수도 있습니다. 문제에 대한 좋은 토론은 in this thread으로 볼 수 있으며 그곳에서 해결책을 얻었습니다 (이것은 OP의 아이디어와 동일합니다).

다음은이 도움이 당신

round_percent <- function(x) { 
    x <- x/sum(x)*100 # Standardize result 
    res <- floor(x) # Find integer bits 
    rsum <- sum(res) # Find out how much we are missing 
    if(rsum<100) { 
     # Distribute points based on remainders and a random tie breaker 
     o <- order(x%%1, sample(length(x)), decreasing=TRUE) 
     res[o[1:(100-rsum)]] <- res[o[1:(100-rsum)]]+1 
    } 
    res 
} 

희망을 위해 할 수있는 기능입니다. 위의 함수에서 오류를 전혀 검사하지 않습니다.

관련 문제