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