Programming/R

[R기초] 패키지 사용; dlgInput(), is.na(), as.numeric()

aram 2023. 8. 1. 11:43

 

- 패키지 설치

install.packages("설치할 패키지 명")

> 만약 폴더명에 한글이나 공백이 있으면 Error  => 경로 변경하여 설치

.libPaths() #패키지 어디 설치? 위치 반환
.libPaths(변경할 폴더경로)  #패키지 설치 폴더 변경가능


- 설치된 패키지 불러오기

library(패키지명)


- 데이터 조회

data() #사용할 수 있는 모든 데이터 조회
data(package명) #해당 패키지 데이터 반환


- R 패키지 list

 

CRAN Packages By Name

 

cran.r-project.org

 

reshape2 패키지

: Melt와 'dcast'(또는 'cast')의 두 가지 기능만 사용하여 유연하게 데이터를 재구성하고 집계합니다.

 

- tips : 종업원 팁 데이터

library(reshape2) #import

# 데이터 정보 확인
class(tips) #"data.frame"
str(tips)

#요일별 팀을 받은 개수 조회
table(tips$day)
  # Fri  Sat  Sun Thur 
  # 19   87   76   62 

#Dinner인 경우만 dinner에 저장
#Lunch인 경우만 lunch에 저장
dinner <- subset(tips, time == "Dinner")
lunch <- subset(tips, time == "Lunch")
str(dinner)
str(lunch)

# dinner 데이터에서 요일별 건수 조회
table(dinner$day)
  # Fri  Sat  Sun Thur 
  # 12   87   76    1 

# dinner 데이터에서 요일별 건수 조회
table(lunch$day)
  # Fri  Sat  Sun Thur 
  # 7    0    0   61 

#dinner, lunch 데이터에서 결제금액, 팁, 인원수의 평균 조회
colMeans(dinner[,c("total_bill", "tip", "size")])
  # total_bill        tip       size 
  # 20.797159   3.102670   
colMeans(lunch[c("total_bill", "tip", "size")])
  # total_bill        tip       size 
  # 17.168676   2.728088   2.411765

# 결제 금액 대비 팁의 비율 조회
tips$tip / tips$total_bill
# 결제 금액 대비 팁의 비율 평균 조회
mean(tips$tip / tips$total_bill) # 0.1608026
# 결제 금액 대비 팁의 비율 최대값조회
max(tips$tip / tips$total_bill)  # 0.7103448
# 결제 금액 대비 팁의 비율 최소값조회
min(tips$tip / tips$total_bill)  # 0.03563814

# 저녁시간의 결제금액 대비 팁의 비율 평균 조회
mean(dinner$tip / dinner$total_bill) #0.1595178
# 저녁시간의 결제금액 대비 팁의 비율 평균 조회
mean(lunch$tip / lunch$total_bill)   #0.1641279

 

# svDialogs 패키지

: 메시지 상자, 입력 상자, 목록, 파일, 디렉터리 선택을 포함하여 GUI에 대한 표준 대화 상자를 신속하게 구성합니다
: R이 GUI 대화 상자를 표시할 수 없는 경우 이러한 대화형 요소의 더 간단한 명령줄 버전도 폴백 솔루션으로 제공됩니다.

- dlgInput() : Prompt for some data in a modal dialog box. 사용자에게 데이터를 입력받을 수 있음

library(svDialogs)
print(dlgInput())
  # The default SciViews GUI (.GUI)
  # using widgets from: nativeGUI, textCLI
  # * Last call: dlg_input(message = "input", gui = .GUI)
  # * Last widgets used: nativeGUI
  # * Last status: ok
  # * Last result:
  # [1] "150"
print(dlgInput("input height(cm)")$res)
  # [1] "150"
  
## BMI : 몸무게 / 미터환산 키의 제곱
# 25 미만 = 정상
# 25 이상 30미만 = 과체중
# 30이상 = 비만
bmi <- function(){
  height <- dlgInput("input height(cm)")$res
  weight <- dlgInput("input weight(kg)")$res
  w <- as.numeric(weight)
  h <- as.numeric(height)
  h = h/100
  BMI <- w/(h^2)
  if(BMI<25) cat(BMI, "정상")
  else if (BMI>=25 & BMI<30) cat(BMI, "과체중")
  else cat(BMI, "비만")
}
bmi()

 

# xlsx 패키지

: Excel 2007 및 Excel 97/2000/XP/2003 파일 형식의 읽기/쓰기/포맷을 위한 R 기능을 제공합니다.

library(xlsx)

>> 하는데 rJava 패키지가 필요하다고 에러난다면?

https://jdk.java.net/java-se-ri/17에서 JAVA_HOME 파일 다운로드 => 원하는 위치에 압축 풀기 => 시스템 환경변수에 JAVA_HOME이름으로 해당 폴더 경로 추가 및 Path에는 해당폴더 경로\bin 추가 후 저장 => RStudio 재 실행

library(xlsx) # rJava 패키지 필요 > 설치 후 path 설정
air <- read.xlsx("airquality.xlsx", header = T, sheetIndex = 1)
str(air)
  # $ Ozone  : chr 오존양 
  # $ Solar.R: chr 일조량
  # $ Wind   : num 풍속
  # $ Temp   : int 기온
  # $ Month  : int 월
  # $ Day    : int 일
  
# air$Ozone : 자료형 == char. why? NA를 문자열로 인식
table(is.na(air$Ozone))
table(is.na(air$Solar.R)) 
	#FALSE 
	#  153
 
# csv와는 다르게 Ozone, Solar.R 데이터 자료형을 숫자형으로 인식
# NA 결측값을 변환
air$Ozone <- as.numeric(air$Ozone)
air$Solar.R <- as.numeric(air$Solar.R)
str(air)

#air 데이터를 air.xlsx파일로 저장하기
write.xlsx(air, "air.xlsx", row.names=F)

 

* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.

728x90