R - data.frame

2020. 9. 18. 22:24R

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# test2.R
# 데이터 프레임
 
eng <- c(90807060)
eng
math <- c(506010020)
math
class <- c(1122)
class
df1 <- data.frame(eng, math)
df1
 
mean(df1$eng)
mean(df1$math)
 
df1 <- data.frame(
  eng = c(90806070),
  math = c(506010020),
  class = c(1122)
)
 
 
#파일로 저장
write.csv(df1, file = "df1.csv")
 
#파일 불러오기
df3 = read.csv("df1.csv")
df3
 
#엑셀 패키지 설치 readxl
install.packages("readxl")
library(readxl)
 
dfx = read_excel("height.xlsx")
dfx
 
#제목이 없을 경우
#dfx2=read_excel("height.xlsx",col_names = F,sheet=1)
#dfx2
 
#RDS 파일(R전용파일)
saveRDS(df2, file = "df2.rds")
df4 = readRDS("df2.rds")
df4
 
#데이터파악
head(df1, 2#상위
tail(df1, 2#하위
View(df1) #새창띄어 테이블형식
dim(df1) # 행과 열 갯수
str(df1) # String 타입
summary(df1) # 데이터프레임 구조
 
# 변수명 바꾸기
df1
#패키지 설치 dplyr
install.packages("dplyr")
library(dplyr)
 
df1_new <- rename(df1, english = eng)
df1_new
 
# 파생변수(열추가) 만들기
df1$var_sum = df1$eng + df1$math
df1
#var_mean 열추가
df1$var_mean = df1$var_sum / 2
df1
#df1 var_test 열추가
#ifelse(조건,참값,거짓값)
#math 점수가 60이상이면 pass 아니면 fail
df1$var_test = ifelse(df1$math >= 60"pass""fail")
df1
#ifelse(조건,참값,ifelse(조건,참값,거짓값값))
#df1  var_test2 열추가
#eng 점수가 90이상이면 A 아니면
# eng 점수가 80이상이면 B 나머지 C
df1$var_test2 = ifelse(df1$eng >= 90"A", ifelse(df1$eng >= 80,
                                                  "B""C"))
df1
 
# 데이터 전처리 - 원하는 데이터 가공
library(dplyr)
# filter() 행추출
# class 에서 1 추출
df1
df1 %>% filter(class == 1)
# != > >=
#math 50 보다 큰 경우
df1 %>% filter(math > 50)
 
#  & and  | or
# class 1 이고 math 50 보다 크거나 같은 경우
df1 %>% filter(class == 1 & math >= 50)
 
# class 1,2 %in% 해당하는 정보 찾기
df1 %>% filter(class %in% c(12))
 
# 열조회 select()
df1 %>% select(math)
 
# - 컬럼명은 컬럼명을 제외한 나머지
df1 %>% select(-math)
 
# 연결 가능
df1 %>% filter(class == 1) %>% select(eng, class)
 
# 정렬하기
df1
# 수학점수기준 오름차순
df1 %>% arrange(math)
# 수학점수 내림차순
df1 %>% arrange(desc(math))
 
#class 내림차순, math 오름 차순
df1 %>% arrange(desc(class), math)
 
# 열추가 mutate()  total 열추가
df1 %>% mutate(total = math + eng)
# 열추가 mean 평균 구하기
df1 %>% mutate(mean = (eng + math) / 2)
# 열추가 grade ifelse() "pass" "fail" math 기준
df1 %>% mutate(grade = ifelse(math >= 60"pass""fail"))
 
# summarise()요약하기
df1 %>% summarise(mean_math = mean(math))
# group_by()    summarise()
# class  클래스별로 math 평균
df1 %>% group_by(class) %>% summarise(mean_math = mean(math))
 
# class별로 sum_math  ,  mean_eng
df1 %>% group_by(class) %>% summarise(sum_math = sum(math),
                                      mean_eng = mean(eng),
                                      n = n())
#mean() sum() min() max() n() 개수
# sd() 표준편차   median() 중앙값
 
# p151 데이터 합치기
test1 <- data.frame(id = c(12345),
                    midterm = c(6080709085))
test2 <- data.frame(id = c(12345), final = c(7083659580))
test1
test2
 
# 데이터 프레임 합치기
library(dplyr)
total <- left_join(test1, test2, by = "id")
total
 
# excel_exam.xlsx  엑셀 파일 불러오기 -> exam
library(readxl)
name <- data.frame(
  class = c(12345),
  teacher = c("kim""lee""park""choi""jung")
)
name
# exam을 기준으로 name 합치고 기준 class
exam <- read_excel("excel_exam.xlsx")
exam_new <- left_join(exam, name, by = "class")
exam_new
 
# id 1~5
# id 6~10
group1 <- data.frame(id = c(12345),
                     midterm = c(6080709085))
group2 <- data.frame(id = c(678910),
                     test = c(7083659580))
groupa11 <- bind_rows(group1, group2)
groupa11
 
cs

DataFrame을 만들고 그 안에서 특정 칼럼을 지정해서 검색하거나 설정을 하고 싶다면

DataFrame을 저장한 변수명  df1$eng 이런 식으로 사용이 가능하다.

mean은 평균을 구하는 함수이다. DataFrame 을 여러 조건을 정해서 검색하거나 할 때

변수명 %>% 이런 식으로 조건을 설정해 주면서 사용이 가능하다.

left_join 은 데이터들을 합칠 때 사용하는데  by=""으로 기준을 정해준다.

'R' 카테고리의 다른 글

R - 외부데이터받아오기  (0) 2020.09.18
R - 데이터 결측치  (0) 2020.09.18
R - 변수선언  (0) 2020.09.18