---
title: "Posit Assistant 소개 및 기본 사용법"
description: "RStudio에 내장된 AI 코딩 어시스턴트, Posit Assistant의 기능과 활용법을 소개합니다"
author: "김경환"
date: 2026-03-14
categories:
- RStudio
- AI
- Posit
---
## Posit Assistant란?
**Posit Assistant**는 RStudio IDE에 내장된 AI 기반 코딩 어시스턴트입니다. 데이터 분석, 통계, 코딩 작업에 특화된 AI로, 마치 숙련된 동료 데이터 과학자와 함께 작업하는 것처럼 도움을 받을 수 있습니다.
단순히 코드를 자동완성해 주는 수준을 넘어, 데이터 탐색부터 통계 분석, 시각화, Shiny 앱 개발, Quarto 문서 작성까지 폭넓은 작업을 지원합니다.
---
## 주요 기능
### 1. R 코드 작성 및 디버깅
작성 중인 코드에 오류가 생겼을 때 원인을 설명하고 수정안을 제시해 줍니다. 함수 사용법이 기억나지 않을 때도 바로 물어볼 수 있습니다.
**예시 질문:**
> "다음 코드에서 오류가 나는 이유를 설명하고 수정해줘"
>
> "tidyverse로 이 데이터를 그룹별로 요약하는 코드를 작성해줘"
### 2. 데이터 탐색 및 분석
데이터프레임을 불러온 뒤 Posit Assistant에게 탐색을 요청하면, 결측값 확인, 분포 파악, 이상값 탐지 등을 코드와 함께 안내해 줍니다.
```r
# 예: 데이터 구조 파악
head(df)
df |> summarise(across(everything(), n_distinct))
df |> summarise(across(everything(), ~sum(is.na(.))))
```
### 3. 시각화 코드 생성
ggplot2를 활용한 시각화를 요청하면 적절한 그래프 유형을 선택해 코드를 작성해 줍니다.
**예시 질문:**
> "연도별 매출 추이를 선 그래프로 그려줘"
>
> "제조사별 연비 분포를 박스플롯으로 시각화해줘"
### 4. 통계 분석
t-검정, ANOVA, 회귀분석 등 통계 분석을 요청하면 적절한 검정을 선택하고 가정 검토부터 결과 해석까지 도와줍니다.
```r
# 예: infer 패키지를 활용한 t-검정
library(infer)
df |> t_test(outcome ~ group, order = c("A", "B"))
```
### 5. 코드 리팩토링 및 문서화
기존 코드를 더 읽기 쉽고 효율적으로 개선하거나, 함수에 roxygen2 문서를 추가하는 작업도 가능합니다.
### 6. Shiny 앱 개발
`bslib` 패키지를 활용한 모던 Shiny 앱을 설계하고 코드를 작성할 수 있습니다.
### 7. Quarto 문서 작성
지금 보고 계신 이 블로그처럼, Quarto 문서 작성과 관련된 문법, 레이아웃, 확장 기능도 안내받을 수 있습니다.
---
## 사용 방법
### 접근 방법
RStudio 우측 패널(또는 상단 메뉴)에서 **Posit Assistant** 탭을 열면 채팅창이 나타납니다. 자연어로 질문하거나 요청을 입력하면 됩니다.
### 현재 파일 컨텍스트 활용
Posit Assistant는 현재 RStudio에서 열려 있는 파일, 선택된 코드, 콘솔 상태 등을 인식합니다. 따라서 코드를 드래그하여 선택한 뒤 질문하면 해당 코드에 대한 맥락 있는 답변을 얻을 수 있습니다.
### 효과적인 질문 방법
| 상황 | 예시 질문 |
|------|-----------|
| 코드 오류 | "이 오류 메시지의 원인은?" |
| 코드 작성 | "mtcars 데이터로 실린더별 연비 박스플롯을 그려줘" |
| 개념 질문 | "tidyr의 pivot_longer와 pivot_wider 차이를 설명해줘" |
| 데이터 탐색 | "이 데이터의 결측값 패턴을 확인해줘" |
| 패키지 추천 | "공간 데이터 시각화에 적합한 R 패키지를 추천해줘" |
---
## 활용 팁
**구체적으로 요청하기**
막연하게 "분석해줘"보다는 "이 데이터에서 age와 income의 상관관계를 시각화하고 피어슨 상관계수를 계산해줘"처럼 구체적으로 요청할수록 좋은 결과를 얻습니다.
**단계별로 작업하기**
복잡한 분석을 한 번에 요청하기보다 단계별로 나눠 진행하면 각 결과를 확인하며 방향을 조정할 수 있습니다.
**결과 검토하기**
AI가 생성한 코드는 반드시 직접 이해하고 검토해야 합니다. 분석 의도와 맞는지 확인하는 습관이 중요합니다.
---
## 튜토리얼: Posit Assistant와 함께하는 공공데이터 탐색
실제로 Posit Assistant가 어떻게 분석을 도와주는지, `gapminder` 데이터를 활용한 시나리오로 살펴보겠습니다. `gapminder`는 전 세계 국가별 기대수명, 인구, 1인당 GDP 등을 담은 공개 데이터로, 공공데이터 분석 연습에 자주 사용됩니다.
::: {.callout-note}
아래 대화 형식은 실제 Posit Assistant와 주고받은 내용을 재현한 것입니다. 채팅창에 질문을 입력하면 코드가 생성되고, 바로 실행해볼 수 있습니다.
:::
### Step 1. 데이터 불러오기
> 💬 **나:** gapminder 데이터를 불러오고 기본 구조를 파악하는 코드를 작성해줘
Posit Assistant가 제안한 코드:
```{r}
#| message: false
library(tidyverse)
library(gapminder)
# 데이터 구조 확인
glimpse(gapminder)
```
```{r}
# 각 열의 고유값 수 확인
gapminder |> summarise(across(everything(), n_distinct))
```
데이터는 142개국, 1952~2007년 5년 간격 총 1,704개 행으로 구성되어 있습니다. 결측값은 없습니다.
---
### Step 2. 아시아 국가 기대수명 추이 탐색
> 💬 **나:** 아시아 국가들의 연도별 기대수명 변화를 선 그래프로 보여줘. 한국을 강조하고 싶어
Posit Assistant가 제안한 코드:
```{r}
#| fig-width: 9
#| fig-height: 5
gapminder |>
filter(continent == "Asia") |>
ggplot(aes(x = year, y = lifeExp, group = country)) +
geom_line(color = "gray80") +
geom_line(
data = \(d) filter(d, country == "Korea, Rep."),
color = "#E63946", linewidth = 1.2
) +
annotate("text", x = 2007, y = 79.5, label = "한국",
color = "#E63946", hjust = -0.1, size = 3.5) +
scale_x_continuous(breaks = seq(1952, 2007, by = 10)) +
labs(
title = "아시아 국가 기대수명 추이 (1952–2007)",
x = NULL, y = "기대수명 (세)"
)
```
한국은 1952년 약 47세에서 2007년 약 79세로, 아시아에서도 가장 빠른 기대수명 증가를 보인 국가 중 하나입니다.
---
### Step 3. 1인당 GDP와 기대수명의 관계
> 💬 **나:** 2007년 데이터만 사용해서 1인당 GDP와 기대수명의 관계를 대륙별로 시각화해줘. GDP는 로그 스케일로 표현해줘
Posit Assistant가 제안한 코드:
```{r}
#| fig-width: 8
#| fig-height: 5
gapminder |>
filter(year == 2007) |>
ggplot(aes(x = gdpPercap, y = lifeExp, color = continent, size = pop)) +
geom_point(alpha = 0.7) +
scale_x_log10(labels = scales::label_dollar(suffix = "")) +
scale_size(range = c(1, 12), guide = "none") +
labs(
title = "1인당 GDP와 기대수명 (2007)",
subtitle = "원 크기: 인구수",
x = "1인당 GDP (로그 스케일, USD)",
y = "기대수명 (세)",
color = "대륙"
)
```
전반적으로 1인당 GDP가 높을수록 기대수명도 높아지는 경향이 있으나, 아프리카 국가들의 경우 같은 소득 수준 대비 기대수명이 낮게 분포하는 것을 확인할 수 있습니다.
---
### Step 4. 대륙별 기대수명 비교 (통계 분석)
> 💬 **나:** 2007년 기준으로 대륙별 기대수명의 평균과 중앙값을 요약해줘. 그리고 아시아와 유럽의 기대수명 차이가 통계적으로 유의한지 검정해줘
Posit Assistant가 제안한 코드:
```{r}
# 대륙별 요약 통계
gapminder |>
filter(year == 2007) |>
group_by(continent) |>
summarise(
n = n(),
평균 = round(mean(lifeExp), 1),
중앙값 = round(median(lifeExp), 1),
sd = round(sd(lifeExp), 1)
) |>
arrange(desc(평균))
```
```{r}
#| message: false
library(infer)
# 아시아 vs 유럽 Welch t-검정
gapminder |>
filter(year == 2007, continent %in% c("Asia", "Europe")) |>
t_test(lifeExp ~ continent, order = c("Europe", "Asia"))
```
유럽과 아시아의 기대수명 차이는 통계적으로 유의미합니다(p < 0.001). 다만 아시아 내부의 국가 간 편차가 매우 크기 때문에(sd ≈ 7.7세), 단순 평균 비교만으로 결론을 내리기보다 내부 분포를 함께 살펴보는 것이 좋습니다.
---
### Step 5. 코드 정리 요청
분석이 끝난 뒤, 산발적으로 작성된 코드를 정리하고 싶을 때도 Posit Assistant가 도움이 됩니다.
> 💬 **나:** 지금까지 작성한 코드를 하나의 깔끔한 스크립트로 정리해줘. 각 단계에 주석을 달아줘
이처럼 분석의 마지막 단계에서 문서화와 코드 정리까지 요청할 수 있습니다.
---
## 마무리
Posit Assistant는 R과 데이터 분석 워크플로우에 최적화된 AI 어시스턴트로, 반복적인 코드 작성 시간을 줄이고 분석의 본질에 더 집중할 수 있도록 돕습니다. 위 튜토리얼처럼 자연어로 단계별 질문을 던지며 분석을 진행하다 보면, 혼자 작업할 때보다 훨씬 빠르게 인사이트에 도달할 수 있습니다.
처음 사용해보신다면 오늘 바로 RStudio에서 `gapminder` 데이터를 불러오고 간단한 질문으로 시작해 보세요.