빅데이터 3주차 정리
2026. 3. 24. 12:37ㆍ카테고리 없음
반응형
1. 데이터를 담는 3가지 기본 그릇
R에는 데이터를 담는 여러 모양의 그릇이 있어.
- 벡터 (Vector): 가장 기본. 같은 종류의 데이터를 한 줄로 쭉 나열한 거. (c() 사용)
- 리스트 (List): 숫자, 문자, 참/거짓 등 아무거나 다 때려 넣을 수 있는 만능 주머니.
- 팩터 (Factor): 혈액형, 성별처럼 **카테고리(범주형)**가 정해진 데이터.
R
# 벡터 정렬하고 조건으로 뽑기 (복습 가~다)
v <- c(10, 6, 9)
sort(v, decreasing = TRUE) # 내림차순 정렬 -> 10, 9, 6
v[v > 8] # 8보다 큰 것만 뽑아! -> 10, 9
# 리스트에서 값 꺼내기 (복습 라)
my_list <- list(name="AI", age=20, tf=TRUE)
my_list[[1]] # 첫 번째 칸에 있는 값 꺼내기 -> "AI"
my_list$tf # 이름이 tf인 값 꺼내기 -> TRUE
# 팩터 (복습 마)
bt <- factor(c('RED', 'BLUE', 'RED'))
levels(bt) # 어떤 종류들이 있는지 확인 -> "BLUE" "RED"
2. 2차원 표 만들기: 매트릭스 vs 데이터프레임
이 부분이 제일 중요해! 둘 다 가로(행)와 세로(열)가 있는 2차원 표지만, 결정적인 차이가 있어.
| 그릇 이름 | 특징 | 언제 써? | 자료 변환 |
| 매트릭스 (Matrix) | 한 가지 타입만 들어감 (숫자면 숫자만!) | 주로 수학/통계 계산할 때 | as.matrix() |
| 데이터프레임 (Data Frame) | 열마다 다른 타입 섞여도 됨 (엑셀이랑 똑같음) | 실제 데이터 분석할 때 (가장 많이 씀) | as.data.frame() |
R
# 매트릭스 만들기 (기초코드 1, 5)
# 1~6을 2행 3열로 채우는데, 가로방향(byrow=T)부터 채워라!
m <- matrix(1:6, nrow=2, ncol=3, byrow=T)
rownames(m) <- c("A", "B") # 가로줄(행) 이름 붙이기
t(m) # t()는 표를 가로세로로 뒤집어 눕히는 함수!
# 데이터프레임 만들기 (복습 아, 종합문제 7)
name <- c("Tom", "Jane")
age <- c(20, 23)
df <- data.frame(name, age) # 문자와 숫자가 한 표에 쏙!
3. 표에서 원하는 데이터 쏙쏙 뽑아내기 (인덱싱)
표에서 데이터를 찾을 때는 데이터[행, 열] 공식만 기억하면 돼. 위치를 비워두면 '전부 다'라는 뜻이야.
R
# 매트릭스나 데이터프레임에서 뽑기 (코드 1, 4)
iris[1, 2] # 1행 2열의 값 1개만 딱!
iris[2, ] # 2행(가로) 전체 다 가져와 (열 자리가 비었으니)
iris[, c(1,3)] # 1열, 3열(세로) 전체 다 가져와 (행 자리가 비었으니)
iris[, -4] # 4열만 빼고 다 가져와! (마이너스는 제외하라는 뜻)
# 데이터프레임 전용 뽑기 ($ 기호)
iris$Species # 이름이 Species인 열만 벡터로 쏙 뽑아줌
# 조건으로 뽑기 (기초코드 6)
# subset(데이터, 조건)
subset(iris, Sepal.Length > 5.0) # 길이가 5 큰 애들(행)만 골라내!
4. 표 분석하고 요약하기
엑셀에서 표 전체 긁어서 합계 내고 평균 내는 걸 코드로 하는 거야. (종합문제 1, 2, 6)
R
# 데이터 상태 파악 삼총사
dim(iris) # 행 몇 개, 열 몇 개야? (크기 확인)
str(iris) # 데이터 구조 좀 요약해서 보여줘! (자료형, 미리보기 등)
table(iris$Species) # 종류별로 몇 개씩 있는지 세어줘!
# 가로세로 합계/평균 내기 (기초코드 4)
# 주의: 문자가 섞여 있으면 에러 나니까 숫자형 열만 골라서 해야 해!
colSums(iris[, 1:2]) # 1~2열의 세로(열) 합계
rowMeans(iris[, 1:2]) # 1~2열의 가로(행) 평균
5. 파일 읽고 쓰기 (File I/O)
분석할 파일을 R로 가져오고, 분석 끝난 걸 다시 엑셀용으로 내보내는 기능이야. (코드 14, 15)
R
# 파일 불러오기
# header=T : 첫 번째 줄은 데이터가 아니라 '제목(머리글)'이라는 뜻!
my_data <- read.csv("jsy.csv", header=T)
# 파일로 저장하기
# row.names=F : 쓸데없는 1, 2, 3.. 행 번호는 빼고 깔끔하게 저장하라는 뜻!
write.csv(my_data, "result.csv", row.names=F)
결론적으로 종합문제 6, 7번 같은 것들은 이 흐름을 하나로 합친 거야.
- data.frame이나 read.csv로 표를 만들고,
- str이나 dim으로 구조를 파악한 다음,
- mean이나 colSums를 써서 평균/합계를 내는 거지.