티스토리 뷰

반응형

with 절의 사용법과 선형보간 하는 방법을 한번 정리해본다. 우선 기초 데이터가 될 데이터프레임을 하나 만든다.

df <- data.frame(x = 1:3, y = 1:3 * 2)
df

# 출력결과
  x y
1 1 2
2 2 4
3 3 6

 

선형보간을 하기위해서 x 값을 50개로 나눈다. 

seq(min(df$x), max(df$x), length = 50)

# 출력결과
 [1] 1.000000 1.040816 1.081633 1.122449 1.163265 1.204082 1.244898 1.285714 1.326531
[10] 1.367347 1.408163 1.448980 1.489796 1.530612 1.571429 1.612245 1.653061 1.693878
[19] 1.734694 1.775510 1.816327 1.857143 1.897959 1.938776 1.979592 2.020408 2.061224
[28] 2.102041 2.142857 2.183673 2.224490 2.265306 2.306122 2.346939 2.387755 2.428571
[37] 2.469388 2.510204 2.551020 2.591837 2.632653 2.673469 2.714286 2.755102 2.795918
[46] 2.836735 2.877551 2.918367 2.959184 3.000000

 

with 절로 사용하면, df 변수를 중복으로 사용하지 않고 간단히 변수를 선언할 수 있다.

with(df, seq(min(x), max(x), length = 50))

# 출력결과
 [1] 1.000000 1.040816 1.081633 1.122449 1.163265 1.204082 1.244898 1.285714 1.326531
[10] 1.367347 1.408163 1.448980 1.489796 1.530612 1.571429 1.612245 1.653061 1.693878
[19] 1.734694 1.775510 1.816327 1.857143 1.897959 1.938776 1.979592 2.020408 2.061224
[28] 2.102041 2.142857 2.183673 2.224490 2.265306 2.306122 2.346939 2.387755 2.428571
[37] 2.469388 2.510204 2.551020 2.591837 2.632653 2.673469 2.714286 2.755102 2.795918
[46] 2.836735 2.877551 2.918367 2.959184 3.000000

 

x값 50개에 대하여 선형보간한 결과이다. 원래는 3개의 쌍의 값만 있었지만, 해당값을 바탕으로 50개의 x, y 값을 만들어냈다.

xgrid = with(df, seq(min(x), max(x), length = 50))

# 선형보간
approx(x = df$x, y = df$y, xout = xgrid)
with(df, approx(x, y, xgrid) # 동일한 결과가 나온다.

# 출력결과
$x
 [1] 1.000000 1.040816 1.081633 1.122449 1.163265 1.204082 1.244898 1.285714 1.326531
[10] 1.367347 1.408163 1.448980 1.489796 1.530612 1.571429 1.612245 1.653061 1.693878
[19] 1.734694 1.775510 1.816327 1.857143 1.897959 1.938776 1.979592 2.020408 2.061224
[28] 2.102041 2.142857 2.183673 2.224490 2.265306 2.306122 2.346939 2.387755 2.428571
[37] 2.469388 2.510204 2.551020 2.591837 2.632653 2.673469 2.714286 2.755102 2.795918
[46] 2.836735 2.877551 2.918367 2.959184 3.000000

$y
 [1] 2.000000 2.081633 2.163265 2.244898 2.326531 2.408163 2.489796 2.571429 2.653061
[10] 2.734694 2.816327 2.897959 2.979592 3.061224 3.142857 3.224490 3.306122 3.387755
[19] 3.469388 3.551020 3.632653 3.714286 3.795918 3.877551 3.959184 4.040816 4.122449
[28] 4.204082 4.285714 4.367347 4.448980 4.530612 4.612245 4.693878 4.775510 4.857143
[37] 4.938776 5.020408 5.102041 5.183673 5.265306 5.346939 5.428571 5.510204 5.591837
[46] 5.673469 5.755102 5.836735 5.918367 6.000000

 

수치를 사용하기 위해서 쓰기도 하지만, 아래와 같이 그래프에 색깔 입힐때, 그라데이션을 줄 수도 있다.

xgrid = with(df, seq(min(x), max(x), length = 50))
interp <- data.frame(
  x = xgrid,
  y = approx(df$x, df$y, xout = xgrid)$y
)
ggplot(interp, aes(x, y, colour = y)) + 
  geom_line(size = 2) +
  geom_point(data = df, size = 5)

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함