R함수 데이터 병합 실습 예제 #데이터전처리
데이터 전처리 중
데이터 병합 관련 R함수들
rbind() #아래로 병합 #r=row
cbind() #옆으로 병합 #c=col
dplyr 패키지 활용한 데이터 병합
inner_join(df_a, df_b, by=c("x"="y") #교집합
#새로운 결측치가 생성되지는 않음
left_join(df_a,df_b, by=c("member"="name")
#df에 따라 연결되는 속성명이 다를수도 있음
#응용 기초 실습
bike.csv 데이터셋 이용
문제 : 여름과 겨울 시간대별 casual 평균 비교시,
가장 큰 차이나는 시각? 답:19
#시간을 다루므로 새로운 변수 'hour"추가
df[,"hour"] = hour(df$datetime)
#여름과 겨울에 대한 정보 얻기
unique(df$season) #여름은 2, 겨울은 4
#여름과 겨울별로 데이터 프레임 나누기
df_2=df[df$season==2, ] #여름
df_4=df[df$season==4, ] #겨울
#각각 casual 평균 계산하기
agg_2=aggregate(df_2, casual~hour, FUN=mean)
agg_4=aggregate(df_4, casual~hour, FUN=mean)
#각각 구한 평균값 합치기
#차이 구하기위해 열로 합치기
agg_bind=cbind(agg_2, agg_4)
#각 평균값의 차이에 대한 새변수 만들고 값 구하기
agg_bind[, "diff"]=agg_bind[,2]-agg_bind[,4]
max(df$diff] #최대값구하기
#응용 심화실습
문제: 비가온날 30도 넘는 시각의 casual평균? 답 95.5
여기서 비가온날은 humidity 최대값이 100이 된날.
#날짜를 다루므로 새변수 추가해주기
df[,"date"]= date(df$datetime)
head(df, 10) #데이터 학인
#같은날에도 humidity값이 여러개임
#즉, 날짜별 humidity 최대값 정리해서
#100인지 확인 필요
df_100=aggregate(humidity~date, df, FUN=max)
#비가온날 만 정리 = humidity==100 있는날
df_100_h=df_100[df_100$humidity==100, ]
#기존데이터랑 교집합으로 결합
df_rain = inner_join(df, df_100_h, by=c("date"="date")))
#문제 조건의 평균구하기
mean(df_rain[df_rain$temp>30, "casual"])