R.

2017-03-20 10 views
2

에서 read.csv, read_csv 또는 read_excel로 데이터를 읽을 때 숫자 값의 자릿수를 지정하는 방법 R에 지리적 위도와 경도를 읽으려고합니다. 이러한 지리 데이터는 일반적으로 6 자리가 넘는 숫자 값입니다. "read_excel"패키지의 read_excel() 및 "R"의 read.csv와 "readr"패키지의 read_csv()를 사용하여 Excel 파일을 읽으려고했습니다. 그러나 위에서 언급 한 기능 중 어느 것도 정보 손실없이 이러한 데이터를 올바르게 읽을 수는 없습니다. 예외없이 이러한 모든 기능은 4 자리 또는 5 자리에서 잘린 숫자 값만 읽을 수있었습니다. 데이터를 읽기 전에 기본 숫자를 지정하기 위해 "options (digits = 8)"을 사용하려고했지만 작동하지 않습니다. 난 유래에 체크인R.

# A tibble: 3 × 2 
     X1  X2 
    <dbl> <dbl> 
1 112.8397 35.50496 
2 112.5840 37.85192 
3 112.5827 37.86028 

5 자리수

read_csv("112.8397456,35.50496106\n112.583984,37.8519194\n112.5826569,37.8602818", col_names = FALSE) 

시스템이 데이터를 자동 절단 : 여기서 I는 "readr"패키지의 read_csv() 함수에 대한 재현성 예를 만들었다 비슷한 질문은 제기되지 않은 것으로 보인다. 어느 누구라도 정보 손실로 이러한 형태의 데이터를 읽는 방법에 대한 실현 가능한 답을 줄 수 있습니까? 감사. :)

+0

주 = 7, 당신은 112.8397을받을 자리 수 있도록'옵션 (숫자 = ...)'도 소수점 전에 자리의 수를 계산하는 것이 : 당신이 기본 R의 read.csv()를 사용할 때 같은 일이 발생 여기에는 7 자리 숫자가 포함되어 있기 때문에 –

+0

@docendodiscimus 감사합니다. 나는 "숫자"라는 단어를 오해한다고 생각합니다. –

답변

2

이것은 판독기에는 문제가되지 않습니다. 전체 데이터는 여전히 거기에 있습니다. R은 단지 그것을 모두 보여주는 것이 아닙니다.

library(tidyverse) 
df.readr <- read_csv("112.8397456,35.50496106\n112.583984,37.8519194\n112.5826569,37.8602818", col_names = FALSE) 

df.base <- read.csv(textConnection("112.8397456,35.50496106\n112.583984,37.8519194\n112.5826569,37.8602818"), header = FALSE) 

# By default R shows 7 digits 
getOption("digits") 
#> [1] 7 

# Both CSV files are truncated at 7 digits 
df.readr 
#> # A tibble: 3 × 2 
#>   X1  X2 
#>  <dbl> <dbl> 
#> 1 112.8397 35.50496 
#> 2 112.5840 37.85192 
#> 3 112.5827 37.86028 
df.base 
#>   V1  V2 
#> 1 112.8397 35.50496 
#> 2 112.5840 37.85192 
#> 3 112.5827 37.86028 

# Bumping up the digits shows more 
options("digits" = 15) 

df.readr 
#> # A tibble: 3 × 2 
#>   X1   X2 
#>   <dbl>  <dbl> 
#> 1 112.8397456 35.50496106 
#> 2 112.5839840 37.85191940 
#> 3 112.5826569 37.86028180 
df.base 
#>   V1   V2 
#> 1 112.8397456 35.50496106 
#> 2 112.5839840 37.85191940 
#> 3 112.5826569 37.86028180 
+0

감사합니다. 나는 "숫자"라는 단어를 십진법 뒤의 숫자의 길이로 오해했다. 문제는 정확하게 단어 자릿수를 이해하면 상당히 간단합니다. :) –