>

백분율 ( % )을 사용하여 퍼센트로 형식화 된 CSV 값을 변환하는 깨끗하고 자동적 인 방법이 있습니까?  기호)를 R?에서

예제 데이터가 있습니다 :

actual,simulated,percent error
2.1496,8.6066,-300%
0.9170,8.0266,-775%
7.9406,0.2152,97%
4.9637,3.5237,29%

다음을 사용하여 읽을 수 있습니다 :

junk = read.csv("Example.csv")

그러나 모든 % 열은 문자열로 읽히고 요소로 변환됩니다 :

> str(junk)
 'data.frame':  4 obs. of  3 variables:
 $ actual       : num  2.15 0.917 7.941 4.964
 $ simulated    : num  8.607 8.027 0.215 3.524
 $ percent.error: Factor w/ 4 levels "-300%","-775%",..: 1 2 4 3

그러나 그것들이 숫자 값이되기를 바랍니다.

read.csv에 대한 추가 매개 변수가 있습니까? 필요한 열을 쉽게 게시하여 숫자 값으로 변환하는 방법이 있습니까? 다른 솔루션?

참고 : 물론이 예에서는 단순히 값을 다시 계산할 수 있지만 더 큰 데이터 파일이있는 실제 응용 프로그램에서는 실용적이지 않습니다.


  • 답변 # 1

    R에는 "백분율"유형이 없으므로 사후 처리를 수행해야합니다.

    DF <- read.table(text="actual,simulated,percent error
    2.1496,8.6066,-300%
    0.9170,8.0266,-775%
    7.9406,0.2152,97%
    4.9637,3.5237,29%", sep=",", header=TRUE)
    DF[,3] <- as.numeric(gsub("%", "",DF[,3]))/100
    #  actual simulated percent.error
    #1 2.1496    8.6066         -3.00
    #2 0.9170    8.0266         -7.75
    #3 7.9406    0.2152          0.97
    #4 4.9637    3.5237          0.29
    
    

  • 답변 # 2

    이것은 stringr 를 사용하는 것을 제외하고는 롤랜드의 솔루션과 동일합니다  꾸러미. 문자열로 작업 할 때 인터페이스가보다 직관적이므로 권장합니다.

    library(stringr)
    d <- str_replace(junk$percent.error, pattern="%", "")
    junk$percent.error <- as.numeric(d)/100
    
    

  • 답변 # 3

    data.table 와 함께  당신은 그것을 달성 할 수 있습니다

    a <- fread("file.csv")[,`percent error` := as.numeric(sub('%', '', `percent error`))/100]
    
    

  • 답변 # 4

    Tidyverse에는 이러한 문제를 해결하는 여러 가지 방법이 있습니다. parse_number () 사양을 사용하면 기호, 텍스트 등에서 숫자를 제거 할 수 있습니다.

    sample_data = "actual,simulated,percent error\n 2.1496,8.6066,-300%\n 0.9170,8.0266,-775%\n7.9406,0.2152,97%\n4.9637,3.5237,29%"
    DF <- read_csv(sample_data,col_types = cols(`percent error`= col_number()))
    # A tibble: 4 x 3
    # actual   simulated `percent error`
    # <chr>        <dbl>           <dbl>
    # 1 2.1496     8.61           -300  
    # 2 + 0.9170     8.03           -775 
    # 3 + 7.9406     0.215            97.0
    # 4 + 4.9637     3.52             29.0
    
    

관련 자료

  • 이전 objective c - sqlite IPHONE에서 열과 같은 rowNum을 얻는 방법
  • 다음 c - printf가 화면에 인쇄되지 않습니다