본문 바로가기
비트 장기/R

9/4

by woohyun22 2018. 9. 4.

 mutate 새 필드만들기


1
2
# df1<-df %>% mutate(total=kor+eng+mat) #mutate 새로운 필드를 만들어준다. a필드 생성 kor껄 넣어줌
# df1
cs



1
2
3
4
5
6
#df %>% mutate(a=ifelse(kor>=60 , "합격", "불합"))#mutate안에 함수 사용가능
#df1<-df %>% mutate(a=kor,b=eng,c=mat) #mutate 새로운 필드를 만들어준다. a필드 생성 kor껄 넣어줌
df %>% arrange(kor);df #arrange함수에 있는 변수를 기준으로 오름차순으로 나타낸다.
df1<-df %>% mutate(total=kor+eng+mat) %>% 
  arrange(total) %>% 
  select(name,total);df1
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#install.packages("dplyr")#데이터 가공에 유용한 패키지
library("ggplot2")
library("dplyr")# 데이터 조건줘서 찾기가 매우 편하다. 이거 써야 필터가능
name<-c("장영실","이순신","이이","정약용","정우현","김구","유관순","김유신")
class<-sample(1:3,8,replace=T); #학년
kor<-sample(1:100,8,replace = T)
eng<-sample(1:100,8,replace = T)
mat<-sample(1:100,8,replace = T)
df<-data.frame(name,class,kor,eng,mat)
 
# df1<-df %>% mutate(total=kor+eng+mat) #mutate 새로운 필드를 만들어준다. a필드 생성 kor껄 넣어줌
# df1
#df %>% mutate(a=ifelse(kor>=60 , "합격", "불합"))#mutate안에 함수 사용가능
#df1<-df %>% mutate(a=kor,b=eng,c=mat) #mutate 새로운 필드를 만들어준다. a필드 생성 kor껄 넣어줌
#df %>% arrange(kor);df #arrange함수에 있는 변수를 기준으로 오름차순으로 나타낸다.
# df1<-df %>% mutate(total=kor+eng+mat) %>% 
#   arrange(total) %>% 
#   select(name,total);df1
 
df %>% summarise(mean(kor),sum(kor),max(kor),n())#n은 통계에 쓰인 인덱스의 갯수를 나타냄
# df안의 데이터들을 ()안에 함수를 여러개 써서 통계를 나타낸다.
df1<-df %>% summarise(n1=sum(kor),n2=sum(eng),n3=sum(mat),n()) %>% 
                   mutate(n1+n2+n3)
dim(df1)
#수학점수가 60점이상인 학생의 이름과 수학 점수를 출력fs sf
 
df %>% filter(mat>=60) %>% 
  select(name,mat)
 
df %>% select(name,mat) %>% 
  filter(mat>=60) %>% 
  arrange(mat);
# %>% 은 출력 굳이 안해도된다.
# select filter 순서 바꿔도 같다.
 
cs


1
2
3
4
5
6
df %>% group_by(class) %>
  summarise(sum(kor))
 
# 1     1        228
# 2     2        256
# 3     3         15
cs



1
2
3
4
5
6
7
8
9
10
11
 
a<-c(1,2,3)
b<-c(80,90,70)
c<-c(10,20,30)
df1<-data.frame(a,b)
df2<-data.frame(a,c)
 
df3<-left_join(df1,df2,by="a");df3 #left join a를 기준으로 df1과 df2의 데이터를 합쳐준다.
d<-c("월","화","수")
df2<-data.frame(a,d)
df3<-left_join(df1,df2,df3,by="a");df3
cs


date frame  left join으로 가로합치기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a<-c(1,2,3,4,5,6)#학번
b<-c(10,20,30,30,20,10)#학번을 가진 학생들이 수강신청한 숫자
 
df1<-data.frame(a,b)
b<-c(10,20,30)
d<-c("컴공과","일어과","수학과")
 
df2<-data.frame(b,d)
 
df3<-left_join(df1,df2,by="b");df3#필드명이 같은게 있어야 left join 가능하다 
#인덱스값의 숫자가 달라도 값이 같으면 할수있다.
# a  b      d
# 1 1 10 컴공과
# 2 2 20 일어과
# 3 3 30 수학과
# 4 4 30 수학과
# 5 5 20 일어과
# 6 6 10 컴공과
cs


date frame  bind_rows로 세로합치기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#install.packages("dplyr")#데이터 가공에 유용한 패키지
library("ggplot2")
 
a<-c(1,2,3)#학번
b<-c(10,20,30)#오전에 시험친 학생의 점수
df1<-data.frame(a,b)
 
a<-c(4,5,6)#학번
b<-c(40,50,60)#오후에 시험친 학생의 점수
 
df2<-data.frame(a,b)
 
df3<-bind_rows(df1,df2);df3#각 두개의 필드명이 같아야 bind_rows할수있다.
#세로합치기 값이 없는부분은 NA처
 
cs



산포도


1
2
3
4
5
6
7
8
9
10
11
#ex1
df<-data.frame(a,b);
#ggplot(data=df,aes(x=a,y=b))#(data=df,aes(x=a,y=b))그래프 틀 나타내기
#ex2
ggplot(data=df,aes(x=a,y=b))+
  geom_point()#그래프 설정 산포도를 나타내준다.
#ex3
ggplot(data=df,aes(x=a,y=b))+
  geom_point()+
  xlim(2,8)+
  ylim(4,6)#4~6 사이의 수 
cs



1
2
3
4
5
6
7
8
9
#ex1
df<-data.frame(a,b);
#ggplot(data=df,aes(x=a,y=b))#(data=df,aes(x=a,y=b))그래프 틀 나타내기
#ex2
ggplot(data=df,aes(x=a,y=b))+
  geom_point()#그래프 설정 산포도를 나타내준다.
#ex3
ggplot(data=df,aes(x=a,y=b))+
  geom_point()#오른쪽 밑에 plots에 export - save as image - 파일명 sample png
cs



1
2
3
4
5
6
7
8
head(mpg)
qplot(mpg$cty,bins = 30)
dim(mpg)#테이블 갯수와 필드 갯수
summary(mpg)#전체 보여주기
 
 
ggplot(data=mpg,aes(x=mpg$cty,y=mpg$hwy))+
  geom_point()
cs



1
2
3
4
5
6
7
8
9
10
#install.packages("dplyr")#데이터 가공에 유용한 패키지
library("ggplot2")
head(economics)
dim(economics)#테이블 갯수와 필드 갯수
summary(economics)#전체 보여주기
 
 
ggplot(data=economics,aes(x=economics$psavert,y=economics$pce))+
  geom_point()
#unemploy pce 
cs




1
2
3
4
5
6
7
a<-sample(1:10,100, replace= T);
b<-sample(1:10,100, replace= T);
df<-data.frame(a,b)
ggplot(data= diamonds,aes(x=diamonds$cut))+
  geom_bar()#속성값 하나만 써서 그친구의 빈도를 보여준다.
#1,2,3,4가 나타난 횟수, 빈도를 보여준다.
#정보가 의미를 가진다 = 기하학적이다.
cs


1
2
3
4
5
6
 
a<-sample(1:5,10, replace= T);
b<-sample(1:10,10, replace= T);
df<-data.frame(a,b);df
ggplot(data= df,aes(x=df$a,y=df$b))+
  geom_col()#a를 가지고있는 b 데이터의 합
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#install.packages("dplyr")#데이터 가공에 유용한 패키지
library("ggplot2")
 
#ex2 가상데이터 평균수면시간
a<-c("호랑이","여우","코끼리","늑대","강아지","개");
b<-c(0,0,1,1,0,1);#0은 암놈 1은 숫놈
c<-sample(6:14,6,replace=T)
df<-data.frame(a,b,c);
#남녀 평균수면시
df<-df %>% group_by(b) %>%  
  summarise(d=mean(c));df
# ggplot(data = df, aes(x=b))+
#   geom_bar()
ggplot(data = df, aes(x=b,y=d))+
  geom_col()
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#install.packages("dplyr")#데이터 가공에 유용한 패키지
library("ggplot2")
 
a<-sample(1:4,20,replace=T);a#1반,2반,3반,4반
b<-sample(1:100,20,replace=T)#국
c<-sample(1:100,20,replace=T)#영
d<-sample(1:100,20,replace=T)#수
 
#반group기준 별로 총점에 대한 빈도그래프를 보여줘
df<-data.frame(a,b,c,d);df
df<-df %>% mutate(total=b+c+d);df
df<-df %>
  group_by(a) %>
  summarise(d = sum(total));df
 
ggplot(df,aes(x=a,y=d))+
  geom_col()
 
cs


728x90

'비트 장기 > R' 카테고리의 다른 글

9/5  (0) 2018.09.05
예제 11번~  (0) 2018.09.03
R 예제  (0) 2018.09.01

댓글