IT story

R에서 소수 자릿수 서식

hot-time 2020. 4. 14. 19:16
반응형

R에서 소수 자릿수 서식


화면에 출력하거나 파일에 쓸 때 소수점 이하 두 자리 만 표시하고 싶은 숫자 (예 : 1.128347132904321674821)가 있습니다. 어떻게합니까?

x <- 1.128347132904321674821

편집하다:

사용 :

options(digits=2)

가능한 답변으로 제안되었습니다. 스크립트에서 한 번만 사용하도록 지정하는 방법이 있습니까? 스크립트에 추가하면 다른 일을하는 것처럼 보이지 않으며 각 숫자를 형식화하기 위해 다시 입력하는 데 관심이 없습니다 (매우 큰 보고서를 자동화합니다).

-

답 : 반올림 (x, 숫자 = 2)


배경 : 이 페이지에 제안 일부 답변은 (예를 들면, signif, options(digits=...)) 소수의 특정 수의 임의의 수에 대해 표시되는 것을 보장하지 않습니다. 나는 이것이 R의 디자인 기능이라고 가정한다. 과학적 실습에는 " 유의 한 수치 "의 원리에 기초하여 특정 숫자를 보여주는 것이 필요하다 . 그러나 많은 도메인 (예 : APA 스타일 , 비즈니스 보고서)의 형식 요구 사항에 따라 소수 자릿수가 표시됩니다. 이것은 종종 중요한 수치가 아닌 일관성 및 표준화 목적으로 수행됩니다.

해결책 :

다음 코드는 숫자의 소수점 이하 두 자리를 정확하게 보여줍니다 x.

format(round(x, 2), nsmall = 2)

예를 들면 다음과 같습니다.

format(round(1.20, 2), nsmall = 2)
# [1] "1.20"
format(round(1, 2), nsmall = 2)
# [1] "1.00"
format(round(1.1234, 2), nsmall = 2)
# [1] "1.12"

보다 일반적인 함수는 여기서 다음과 x수 있으며 k보여 소수점 수이다. trimws숫자로 구성된 벡터가 있으면 유용 할 수있는 선행 공백을 제거합니다.

specify_decimal <- function(x, k) trimws(format(round(x, k), nsmall=k))

예 :

specify_decimal(1234, 5)
# [1] "1234.00000"
specify_decimal(0.1234, 5)
# [1] "0.12340"

원하는 x소수점 이하 자릿수를 지정할 수 있습니다. 여기에 x많은 소수 자릿수 숫자입니다. 이 숫자의 소수점 이하 자릿수를 최대 8 자리까지 표시한다고 가정합니다.

x = 1111111234.6547389758965789345
y = formatC(x, digits = 8, format = "f")
# [1] "1111111234.65473890"

여기 format="f"에 일반적인 소수점 이하 자릿수 (xxx.xxx)로 부동 숫자를 제공하고 digits자릿수를 지정합니다. 반대로, 정수를 표시하려면 format="d"(와 같이 sprintf)를 사용하십시오.


내 패키지 formattable을 사용해 볼 수 있습니다 .

> # devtools::install_github("renkun-ken/formattable")
> library(formattable)
> x <- formattable(1.128347132904321674821, digits = 2, format = "f")
> x
[1] 1.13

좋은 점은 x여전히 숫자 형 벡터이며 동일한 서식으로 더 많은 계산을 수행 할 수 있습니다.

> x + 1
[1] 2.13

더 나은, 숫자가 손실되지 않습니다, 당신은 언제든지 더 많은 숫자로 다시 포맷 할 수 있습니다 :)

> formattable(x, digits = 6, format = "f")
[1] 1.128347

후행 0을 유지한다고 가정하고 소수점 이하 2 자리

sprintf(5.5, fmt = '%#.2f')

어느 것이

[1] "5.50"

@mpag가 아래에 언급했듯이 R은 때때로 이것으로 예기치 않은 값을 줄 수 있으며 둥근 방법, 예를 들어 sprintf (5.5550, fmt = '% #. 2f')는 5.56이 아닌 5.55를 나타냅니다.


기능 prettyNum, 형식 확인

시험 시행 제로 (예 : 123.1240) 사용 sprintf(x, fmt='%#.4g')


그런 것 :

options(digits=2)

숫자 정의 옵션 :

digits: controls the number of digits to print when printing numeric values.

고정 숫자보다 유효 숫자를 선호하는 경우 signif 명령이 유용 할 수 있습니다.

> signif(1.12345, digits = 3)
[1] 1.12
> signif(12.12345, digits = 3)
[1] 12.1
> signif(12345.12345, digits = 3)
[1] 12300

이 함수 formatC()를 사용하여 숫자를 소수점 이하 두 자리로 서식을 지정할 수 있습니다. 결과 값에 후행 0이 포함 된 경우에도이 함수는 소수점 이하 두 자리를 제공합니다.


강제 변형 K 소수점 이하 자릿수에이 변형을 사용하고 있습니다.

# format numeric value to K decimal places
formatDecimal <- function(x, k) format(round(x, k), trim=T, nsmall=k)

R의 숫자 객체는 배정 밀도 로 저장되므로 소수점 이하 16 진수의 정밀도를 얻을 수 있습니다. 나머지는 노이즈입니다. 위에 표시된 숫자는 단지 예일 뿐이지 만 22 자리입니다.


나처럼 보일 것 같아

library(tutoR)
format(1.128347132904321674821, 2)

약간의 온라인 도움말.


숫자 또는 목록을 반올림하려면 간단히

round(data, 2)

그런 다음 데이터는 소수점 이하 2 자리로 반올림됩니다.

참고 URL : https://stackoverflow.com/questions/3443687/formatting-decimal-places-in-r

반응형