R – 데이터 가공 및 CSV파일 활용 스크립트로 알아보기

Script )

library(dplyr)
library(ggplot2)
library(lubridate) #날짜 관련 패키지
library(tidyr) # gather함수 담고 있음 

avocado<-read.csv("avocado.csv",header=TRUE,sep=",")
avocado
# 표본의 개수, 변수의 개수 파악하기
dim(avocado)

# 그룹 만들고 그 그룹에 대한 Total.volume와 Averageprice평균 구하기 
(x_avg = avocado %>% group_by(region) %>% summarize(V_avg = mean(Total.Volume), P_avg = mean(AveragePrice)))

View(x_avg)
# 히스토그램 보기
hist(x_avg$V_avg)
# 데이터 시각화 
plot(x_avg$P_avg,x_avg$V_avg)

# region,year로 그룹 만들고 그 그룹에 대한 Total.volume와 Averageprice평균 구하기 
(x_avg = avocado %>% group_by(region, year) %>% summarize(V_avg = mean(Total.Volume), P_avg = mean(AveragePrice)))

View(x_avg)

# region,year,type으로 그룹 만들고 그 그룹에 대한 Total.volume와 Averageprice평균 구하기 
x_avg = avocado %>% group_by(region, year, type) %>% summarize(V_avg = mean(Total.Volume), P_avg = mean(AveragePrice))

View(x_avg)

# TotalUS빼고 ggplot를 통해 시각화한다. 
x_avg %>% filter(region != "TotalUS") %>% ggplot(aes(year, V_avg, col = type)) + geom_line() + facet_wrap(~region)

# V_avg기준으로 x_avg를 내림차순
ax_avg<-arrange(x_avg,desc(V_avg))
View(ax_avg)

# 필터 주기
x_avg1 = x_avg %>% filter(region != "TotalUS")
x_avg1

x_avg1 = x_avg %>% filter(region == "Albany")
x_avg1

# 필터 조건 여러 개 주기
x_avg.state<-x_avg %>% filter(region==("Albany")|region==("Atlanta"))
x_avg.state

# 통계 함수 사용하기
max(x_avg1$V_avg) #최대값
mean(x_avg1$V_avg) #평균값
var(x_avg1$V_avg) #분산
median(x_avg1$V_avg) # 중앙값
mode(x_avg1$V_avg) #최빈값

# lubridate패키지의 month함수 사용해서 그룹핑,평균 구하기 
(x_avg = avocado %>% group_by(region, year, month(Date), type) %>% summarize(V_avg = mean(Total.Volume), P_avg = mean(AveragePrice)))

# txt파일 불러오기
wine<-read.table("wine.data.txt",header=TRUE,sep=",")
View(wine)

# csv파일 만들기 
write.csv(x_avg,file="xavocado")

# txt파일 읽고 저장 
n<-readLines("wine.name.txt")
n

# n으로부터 문자열 빼와서 wine의 names로 설정 [두 번째 인수는 시작 인덱스,세 번째 인수는 끝낼 인덱스]
# nchar함수는 문자열의 크기 구하는 함수 
names(wine)[2:14] <- substr(n,4, nchar(n))
View(wine)

# wine에서 60퍼 가져오기 
train_set = sample_frac(wine, 0.6)
str(train_set)

# wine-train_set 구하기 <차집합>: wine에 속하면서 train_set에 속하지 않으니까 나머지 40퍼 구하는거
test_set = setdiff(wine, train_set)
str(test_set)

# 새로운 csv파일 가져오기 
elec_gen = read.csv("electricity_generation_per_person.csv", header = TRUE, sep = ",")
View(elec_gen)

elec_use = read.csv("electricity_use_per_person.csv", header = TRUE, sep = ",")
names(elec_use)[2:56] = substr(names(elec_use)[2:56], 2, nchar(names(elec_use)[2:56]))
View(elec_use)

# gather함수를 이용해서 기준열과 두 개의 열 만들기 <기준열은 두 번째 인수에 쓰이며 -가 들어감> 
# <두 열은 키 열과 값 열로 구성>
elec_gen_df = gather(elec_gen, -country, key = "year", value = "ElectricityGeneration")
View(elec_gen_df)
elec_use_df = gather(elec_use, -country, key = "year", value = "ElectricityUse")
View(elec_use_df)

북 참고) R로 배우는 데이터 과학

Leave a Reply

Your email address will not be published. Required fields are marked *