지나가는 괴짜의 칼럼

R 프로그래밍 쌩기초

기초 R 프로그래밍 함수의 사용과 이에 대한 설명

2024.11.04 | 조회 205 |
0
|
지나가는 괴짜의 기록소의 프로필 이미지

지나가는 괴짜의 기록소

쓸데없는 생각, 쓸모있게 만들기

 

R 프로그램이 어려우시다고요?

헉;;
헉;;

걱정하지 마세요! 오늘은 mtcars 데이터를 이용해서 마력과 연비 간의 관계를 알아보는 데이터 통계 분석을 진행하고, 이를 시각화 하는 방법을 함께 알아보겠습니다.

1. 데이터 전처리 하는법

R 프로그래밍 사용을 위해선 우선 데이터가 어떻게 생겼는지 알아야해요. 지금부터 데이터가 어떻게 생겼는지 확인하고, 통계분석이 쉽도록 데이터 전처리를 진행하도록 할게요!

우와 신난다
우와 신난다

str() 함수의 사용과 데이터 구조 미리보기

str(mtcars)

str() 함수는 데이터의 구조를 확인할 수 있게 해주는 함수입니다. 예를 들어, mtcars라는 데이터셋의 변수가 어떤 것들이 있고, 각 변수가 어떤 타입인지 알 수 있어요. 이를 통해 데이터셋이 어떻게 구성되어 있는지 대략적으로 파악할 수 있습니다.

factor() 함수를 활용한 숫자-> 문자열 변환

mtcars$am <- factor(mtcars$am, levels = c(0, 1), labels = c("자동", "수동"))

am은 차의 변속기 유형을 나타내는 변수인데요, 0"자동"을, 1"수동"을 의미해요. factor() 함수를 사용해서 이 숫자들을 좀 더 알아보기 쉽게 "자동""수동"으로 변환한 거예요. 이제 am 변수를 보면 숫자 대신 "자동" 또는 "수동"으로 표시됩니다. 이어서 cyl 변수도 알아보기 쉽게 바꿔봅시다!

mtcars$cyl <- factor(mtcars$cyl, levels = c(4, 6, 8), labels = c("4 cylinder", "6 cylinder", "8 cylinder"))

cyl은 차의 실린더 수를 나타내는 변수입니다. 여기에 있는 숫자 4, 6, 8을 각각 "4 cylinder", "6 cylinder", "8 cylinder"라는 문자열로 바꿔줬어요. 이렇게 하면 실린더 수가 몇 개인지 더 직관적으로 볼 수 있습니다~^^

앗 잠깐!

혹시 그거 아시나요?
혹시 그거 아시나요?

특정 변수의 조건에 따라 데이터를 필터링 할 수 있다는 사실! 이것도 같이 가르쳐드리겠습니다.

특정 변수의 조건에 따라 데이터를 필터링하는 방법

mtcars2 <- mtcars[mtcars$cyl == "4 cylinder", ]

요 아이는 cyl 변수가 "4 cylinder"인 데이터만 필터링해서 mtcars2라는 새로운 데이터셋에 저장하는 역할을 해요. 이제 mtcars2에는 실린더가 4개인 차들에 대한 정보만 들어 있습니다^^

다시 원래대로 돌아가보아요^^
다시 원래대로 돌아가보아요^^

mean() 함수를 이용해 평균 계산하는 법

automatic_mean <- mean(mtcars$mpg[mtcars$am == "자동"]) manual_mean <- mean(mtcars$mpg[mtcars$am == "수동"]) print(paste("자동 변속기 연비 평균:", automatic_mean)) print(paste("수동 변속기 연비 평균:", manual_mean))

mpg는 차량의 연비(연료 효율성)를 나타내는 변수예요. 여기서는 변속기가 "자동"인 차량과 "수동"인 차량의 평균 연비를 계산했어요. mean() 함수로 각각의 평균 연비를 구하고, print(paste())로 결과를 화면에 출력해줍니다.

ㄷㄷㄷ 벌써 데이터 전처리를 끝내셨습니다.

역시 여러분은 천재~~
역시 여러분은 천재~~

이제 데이터 시각화로 갑시다!

2. 데이터 시각화 하는법

지금부터 변속기 유형과 연비의 관계를 시각화 하는 방법을 알아보겠습니다^^

ggplot2 패키지와 geom_boxplot()을 이용한 상자 도표 그리기

ggplot(mtcars, aes(x = am, y = mpg)) + geom_boxplot()

ggplot2 패키지를 사용해서 ammpg 변수를 이용해 상자도표(박스플롯)를 그리는 코드입니다. aes(x = am, y = mpg)는 x축에 am(변속기 유형), y축에 mpg(연비)를 설정하라는 뜻이에요. geom_boxplot()은 상자도표를 그려주는 함수예요.

헉 변속기 순서를 거꾸로 표시하고 싶으시다고요?
헉 변속기 순서를 거꾸로 표시하고 싶으시다고요?

걱정하지 마세요^^ 알려드리겠습니다~

X축에서 수동 변속기가 먼저 나오도록 하는 법

mtcars$am <- factor(mtcars$am, levels = c("수동", "자동"))

변속기 유형의 순서를 "수동"이 먼저, "자동"이 그다음으로 나오도록 설정해 줍니다. 이렇게 하면 상자도표에서 수동 변속기가 왼쪽에, 자동 변속기가 오른쪽에 표시됩니다.

이제 좀 이쁘게 꾸며봅시다^^
이제 좀 이쁘게 꾸며봅시다^^

색상 변경, 제목과 축 라벨링 하는 법

ggplot(mtcars, aes(x = am, y = mpg)) + geom_boxplot(fill = "steelblue") + labs(title = "Data visualization", x = "Am", y = "Mpg")

박스플롯의 색상을 fill = "steelblue"로 설정해 파란색 계열로 채우고, labs()를 사용해 그래프의 제목과 축의 레이블을 설정해 줍니다. 이제 그래프가 더 알기 쉽게 되었죠? 제목은 "Data visualization", x축 이름은 "Am", y축 이름은 "Mpg"로 지정했답니다^^

우와~ 드디어 시각화 기초까지 끝내셨어요!

바로 통계분석으로 넘어가봅시다!
바로 통계분석으로 넘어가봅시다!

3. 통계 분석 하는 법

이제 처음 목표인 연비와 마력간의 관계로 돌아가야겠지요? 사실 잡설이 많았음

흠흠 다 여러분의 학습을 위한 것입니다.

lm() 함수 이용 회귀분석 하는 법

model <- lm(mpg ~ hp, data = mtcars)

lm() 함수는 회귀분석을 수행하는 함수입니다. 여기서는 mpg ~ hp 연비(mpg) 마력(hp)의 함수로 분석했어요^^ 회귀분석은 두 변수 간의 관계를 파악하는 대표적인 분석 방법이에요.

결과를 한번 출력해볼까요?

summary() 함수를 이용해 회귀분석 결과 보기

summary(model)

결과가 잘~~ 나오셨는지요?^^

summary() 함수는 회귀분석의 결과를 보여줍니다. 이를 통해 회귀식의 기울기와 절편 값을 알 수 있어요.

이제 그래프를 그려봅시다!

ggplot() 함수를 이용해 회귀식 그래프 그리는 법

ggplot(mtcars, aes(x = hp, y = mpg)) + geom_point(color = "blue") + geom_smooth(method = "lm", se = FALSE, color = "red") + labs(title = "마력(hp)과 연비(mpg) 간의 관계", x = "마력 (hp)", y = "연비 (mpg)")

ggplot()으로 마력(hp)연비(mpg) 간의 관계를 산점도로 표시하고, geom_point()로 파란색 점을, geom_smooth()로 빨간색 회귀선을 그려줍니다. method = "lm"은 회귀선을 나타내고, se = FALSE는 신뢰구간을 생략하겠다는 뜻이에요. 제목과 축 이름도 설정해 직관적인 그래프가 완성되었네요~^^

R 프로그래밍 쌩 기초를 완료하신 여러분, 축하드려요^^

짝짝짝
짝짝짝

글이 도움되셨다면 좋아요와 후원 부탁드립니다^^

삥 뜯는거 아님

 

다가올 뉴스레터가 궁금하신가요?

지금 구독해서 새로운 레터를 받아보세요

✉️

이번 뉴스레터 어떠셨나요?

지나가는 괴짜의 기록소 님에게 ☕️ 커피와 ✉️ 쪽지를 보내보세요!

댓글

의견을 남겨주세요

확인
의견이 있으신가요? 제일 먼저 댓글을 달아보세요 !
© 2025 지나가는 괴짜의 기록소

쓸데없는 생각, 쓸모있게 만들기

메일리 로고

도움말 자주 묻는 질문 오류 및 기능 관련 제보 뉴스레터 광고 문의

서비스 이용 문의admin@team.maily.so

메일리 사업자 정보

메일리 (대표자: 이한결) | 사업자번호: 717-47-00705 | 서울 서초구 강남대로53길 8, 8층 11-7호

이용약관 | 개인정보처리방침 | 정기결제 이용약관 | 라이선스