source

write.table() 출력의 10진수를 제어하려면 어떻게 해야 합니까?

ittop 2023. 4. 17. 22:28
반응형

write.table() 출력의 10진수를 제어하려면 어떻게 해야 합니까?

데이터(예: data.frame)를 다룰 때 사용자는 다음을 사용하여 숫자 표시를 제어할 수 있습니다.

options(digits=3) 

이렇게 data.frame을 표시합니다.

ttf.all

사용자가 이렇게 Excell에 데이터를 붙여넣어야 하는 경우

write.table(ttf.all, 'clipboard', sep='\t',row.names=F)

digits 파라미터는 무시되며 숫자는 반올림되지 않습니다.

출력 보기

> ttf.all
  year V1.x.x V1.y.x ratio1 V1.x.y V1.y.y ratioR V1.x.x V1.y.x ratioAL V1.x.y V1.y.y ratioRL
1 2006    227    645   35.2     67    645   10.4    150    645    23.3     53    645    8.22
2 2007    639   1645   38.8    292   1645   17.8    384   1645    23.3    137   1645    8.33
3 2008   1531   3150   48.6    982   3150   31.2    755   3150    24.0    235   3150    7.46
4 2009   1625   3467   46.9   1026   3467   29.6    779   3467    22.5    222   3467    6.40

그러나 엑셀(클립보드)에 있는 것은 반올림되지 않습니다.의 제어 방법write.table()?

기능을 사용할 수 있습니다.format()예를 들어 다음과 같습니다.

write.table(format(ttf.all, digits=2), 'clipboard', sep='\t',row.names=F)

format()는 data.frames를 포함한 많은 클래스의 메서드를 가진 범용 함수입니다.와는 달리round()데이터 프레임이 모두 숫자가 아니더라도 오류가 발생하지 않습니다.포맷 옵션에 대한 자세한 내용은 다음 URL에서 도움말파일을 참조해 주세요.?format

혼합된 데이터 프레임에 대한 솔루션 추가character그리고.numeric컬럼을 클릭합니다.먼저 선택하기 위해 사용합니다.numeric그런 다음 컬럼을 적용합니다.round()기능을 합니다.

# install.packages('dplyr', dependencies = TRUE)
library(dplyr)

df <- read.table(text = "id  year V1.x.x V1.y.x ratio1
a 2006    227.11111    645.11111   35.22222  
b 2007    639.11111   1645.11111   38.22222  
c 2008   1531.11111   3150.11111   48.22222  
d 2009   1625.11111   3467.11111   46.22222",
                 header = TRUE, stringsAsFactors = FALSE)

df %>% 
  mutate_if(is.numeric, round, digits = 2)
#>   id year  V1.x.x  V1.y.x ratio1
#> 1  a 2006  227.11  645.11  35.22
#> 2  b 2007  639.11 1645.11  38.22
#> 3  c 2008 1531.11 3150.11  48.22
#> 4  d 2009 1625.11 3467.11  46.22

### dplyr v1.0.0+
df %>% 
  mutate(across(where(is.numeric), ~ round(., digits = 2)))
#>   id year  V1.x.x  V1.y.x ratio1
#> 1  a 2006  227.11  645.11  35.22
#> 2  b 2007  639.11 1645.11  38.22
#> 3  c 2008 1531.11 3150.11  48.22
#> 4  d 2009 1625.11 3467.11  46.22

reprex 패키지로 2019-03-17에 작성(v0.2.1.9000)

언급URL : https://stackoverflow.com/questions/14260646/how-to-control-number-of-decimal-digits-in-write-table-output

반응형