<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>mini world</title>
    <link>https://minigameworld.tistory.com/</link>
    <description>취미블로그</description>
    <language>ko</language>
    <pubDate>Fri, 5 Jun 2026 02:42:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>별수호자룰루</managingEditor>
    <item>
      <title>[모두를 위한 R 데이터 분석 입문] chap08 - 연습문제 풀이</title>
      <link>https://minigameworld.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;중간 중간 귀찮아서 안푼 문제도 있어요.. 그냥 혼자 공부하면서 올리는거라 이상한 부분은 댓 남겨주시면 수정할게요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;R에서 기본 제공하는 데이터셋이나 특정 데이터셋을 받아오거나 하는 문제가 아니라, 직접 하나하나 데이터값을 입력해서 프레임을 만들어줘야하는 문제는 시간 상 건너뛰었어요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제 1&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750818555560&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#01
us &amp;lt;- data.frame(state.x77, state.division)
us
us$index &amp;lt;- rownames(us)
us
#(1)
library(treemap)
treemap(us, index=c(&quot;state.division&quot;, &quot;index&quot;),
        vSize=&quot;Population&quot;,
        vColor=&quot;Income&quot;,
        title=&quot;1-(1) 그래프&quot;)

#(2)
treemap(us, index=c(&quot;state.division&quot;, &quot;index&quot;),
        vSize=&quot;HS.Grad&quot;,
        vColor=&quot;Murder&quot;)

#(3)
symbols(us$Income, us$Illiteracy,
        circle=us$Population,
        bg=&quot;green&quot;)
text(us$Income, us$Illiteracy,
     rownames(us))

#(4)
symbols(us$Illiteracy, us$Murder,
        circle=us$Area,
        bg=&quot;green&quot;)
text(us$Illiteracy, us$Murder,
     rownames(us))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제2&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750824491465&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;r&quot;&gt;&lt;code&gt;#02
ds &amp;lt;- data.frame(swiss)
ds$index &amp;lt;- rownames(ds)
ds
#(1)
ds$group &amp;lt;- &quot;MID&quot;
ds$group[ds$Education &amp;gt;=13] &amp;lt;- &quot;HIGH&quot;
ds$group[ds$Education &amp;lt;= 6] &amp;lt;- &quot;LOW&quot;

treemap(ds, index=c(&quot;group&quot;, &quot;index&quot;),
        vSize=&quot;Fertility&quot;,
        vColor=&quot;Agriculture&quot;)

#(2)
treemap(ds, index=&quot;index&quot;,
        vSize=&quot;Catholic&quot;, vColor = &quot;Examination&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제3&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750824608826&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;r&quot;&gt;&lt;code&gt;#03
symbols(ds$Fertility, ds$Agriculture,
        circle=ds$Education,
        bg=&quot;green&quot;)
text(ds$Fertility, ds$Agriculture,
     rownames(ds))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제4&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750824809980&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#04
ds_tree &amp;lt;- data.frame(trees)
head(ds_tree)

symbols(ds_tree$Girth, ds_tree$Height,
        circle=ds_tree$Volume,
        bg=&quot;blue&quot;)
text(ds_tree$Girth, ds_tree$Height,
     rownames(ds_tree))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제5&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750825935569&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#05

ds_color &amp;lt;- data.frame(HairEyeColor)
head(ds_color)
mosaicplot(~Hair+Eye, data=ds_color)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제7&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750827031774&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#07
library(ggplot2)
cars &amp;lt;- data.frame(mtcars)
head(cars)
ggplot(cars, aes(x=carb)) +
  geom_bar()+
  labs(
    x = &quot;기화기의 수&quot;, 
    y = &quot;빈도&quot;,
    title = &quot;기화기의 수&quot;
  )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제8&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750827176826&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#08
ggplot(cars, aes(x=cyl))+
  geom_bar(fill='green')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제9&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750827274513&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#09
ggplot(cars, aes(x=mpg))+
  geom_histogram(binwidth = 5.0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제10&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750827437573&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#10
ggplot(ds_tree, aes(x=Volume))+
  geom_histogram(binwidth = 5.0, fill='steelblue')+
  labs(x=&quot;나무부피&quot;, y=&quot;빈도&quot;, title=&quot;나무부피 히스토그램&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제11&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750827629962&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#11
ggplot(ds, aes(x=Examination, y=Agriculture, color=Fertility))+
  geom_point()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제12&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750828373726&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#12
ggplot(cars, aes(y=mpg, fill=factor(gear)))+
  geom_boxplot()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제15&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750829253551&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#15
library(Rtsne)
ds &amp;lt;- data.frame(state.x77)
head(ds)

#2차원 산점도
tsne &amp;lt;- Rtsne(ds, dims=2, perplexity=10)
df.tsne &amp;lt;- data.frame(tsne$Y)
head(df.tsne)
ggplot(df.tsne, aes(x=X1, y=X2))+
  geom_point()

#3차원 산점도
library(&quot;rgl&quot;)
library(&quot;car&quot;)
tsne &amp;lt;-Rtsne(ds, dims=3, perplexity=10)
df.tsne &amp;lt;- data.frame(tsne$Y)
head(df.tsne)
scatter3d(x=df.tsne$X1, y=df.tsne$X2, z=df.tsne$X3)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연습문제16&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750829790430&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#16
#2차원 산점도
tsne &amp;lt;- Rtsne(ds, dims=2, perplexity=10)
df.tsne &amp;lt;- data.frame(tsne$Y)
ggplot(df.tsne, aes(x=X1, y=X2))+
  geom_point()

#3차원 산점도
tsne &amp;lt;-Rtsne(ds, dims=3, perplexity=10)
df.tsne &amp;lt;- data.frame(tsne$Y)
head(df.tsne)
scatter3d(x=df.tsne$X1, y=df.tsne$X2, z=df.tsne$X3)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터분석가로 살아남기/빅데이터</category>
      <category>r데이터분석입문연습문제</category>
      <category>r데이터분석입문연습문제답</category>
      <category>모두를위한r데이터분석입문</category>
      <category>모두를위한r데이터분석입문2판</category>
      <category>한빛아카데미</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/24</guid>
      <comments>https://minigameworld.tistory.com/24#entry24comment</comments>
      <pubDate>Wed, 25 Jun 2025 18:37:26 +0900</pubDate>
    </item>
    <item>
      <title>[모두를 위한 R 데이터 분석 입문] chap06 - 연습문제 풀이</title>
      <link>https://minigameworld.tistory.com/23</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt; 중간 중간 귀찮아서 안푼 문제도 있어요.. 그냥 혼자 공부하면서 올리는거라 이상한 부분은 댓 남겨주시면 수정할게요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제01&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369917133&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#01
cor(cars$speed, cars$dist)
plot(cars$speed, cars$dist)
res &amp;lt;- lm(cars$dist~cars$speed)
abline(res, col='red')
#상관계수가 0.8로 강한 양의 상관관계임&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제02&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369929500&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#02
cor(pressure$temperature, pressure$pressure)
plot(pressure$temperature, pressure$pressure)
res &amp;lt;- lm(pressure$pressure~pressure$temperature)
abline(res, col='red')
#상관계수가 0.76으로 양의 상관관계가 있는 편임&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;습문제03&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369944041&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#03
ds &amp;lt;- swiss[,1:4]
head(ds)
pairs(ds)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제04&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369956895&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#04
plot(iris$Petal.Length, iris$Petal.Width,
     col = iris$Species,
     pch = 3)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제07&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369963926&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#07
ds &amp;lt;- state.x77
cor(ds)
pairs(ds)
#Income과 가장 큰 상간관계를 가진변수는 HS Grad임&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;습문제10&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369973317&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#10
#(1)
plot(trees$Girth, trees$Height)
cor(trees$Girth, trees$Height)
#(2)
pairs(trees)
cor(trees)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제11&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369985924&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#11
plot(Orange$age, Orange$circumference,
     col=Orange$Tree,
     pch = 10)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제12&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747369996970&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#12
#(1)
data(&quot;Glass&quot;)
myds &amp;lt;- Glass
#(2,3,4)
pairs(myds[,-10])
cor(myds[,-10])
pairs(myds[,-10],
      col = myds$Type)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제14&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747370010076&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#14
years &amp;lt;- 1875:1972
hlevel &amp;lt;- as.vector(LakeHuron)
lines(years,
     hlevel,
     type='b',
     main = 'LakeHuron',
     col='skyblue')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #222222; text-align: start;&quot;&gt;연습문제16&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747370020706&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#16
str(USAccDeaths)
months &amp;lt;- 1:12
acc_1973 &amp;lt;- acc[1:12]
acc_1975 &amp;lt;- acc[25:36]
acc_1977 &amp;lt;- acc[49:60]

plot(months, acc_1973, type = &quot;l&quot;, col = &quot;red&quot;)
lines(months, acc_1975, col = &quot;blue&quot;)
lines(months, acc_1977, col = &quot;green&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/빅데이터</category>
      <category>모두를위한r데이터분석연습문제</category>
      <category>모두를위한r데이터분석입문</category>
      <category>연습문제답</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/23</guid>
      <comments>https://minigameworld.tistory.com/23#entry23comment</comments>
      <pubDate>Fri, 16 May 2025 18:34:12 +0900</pubDate>
    </item>
    <item>
      <title>[모두를 위한 R 데이터 분석 입문] chap05 - 연습문제 풀이</title>
      <link>https://minigameworld.tistory.com/22</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;중간 중간 귀찮아서 안푼 문제도 있어요.. 그냥 혼자 공부하면서 올리는거라 이상한 부분은 댓 남겨주시면 수정할게요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 01&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747293867792&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#01
#(1,2,3,4)
tabaco &amp;lt;- esoph$tobgp
tabaco
unique(tabaco)
table(tabaco)
barplot(table(tabaco), main='막대그래프')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 02&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747293882046&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#02
#(1,2,3,4)
result &amp;lt;- c(&quot;P&quot;, &quot;P&quot;, &quot;F&quot;, &quot;P&quot;, &quot;F&quot;, &quot;P&quot;, &quot;F&quot;, &quot;P&quot;, &quot;P&quot;, &quot;F&quot;)
table(result)
barplot(table(result), main='막대그래프')
pie(table(result), main='파이차트')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 03&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747293891923&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#03
#(1,2,3,4)
season &amp;lt;- c(&quot;여름&quot;, &quot;봄&quot;, &quot;겨울&quot;, &quot;가을&quot;, &quot;여름&quot;, &quot;여름&quot;, &quot;가을&quot;, &quot;겨울&quot;, &quot;봄&quot;)
table(season)
barplot(table(season), main='계절선호', col=colors)
pie(table(season))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 05&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747293903724&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#05
ds &amp;lt;- mtcars
mean(ds$wt)
median(ds$wt)
mean(ds$wt, trim = 0.15)
sd(ds$wt)
summary(ds$wt)
table(ds$cyl)
boxplot(ds$wt)
boxplot.stats(ds$wt)
boxplot(ds$disp)
boxplot(ds$mpg~ds$gear)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 06&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747293913865&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#06
ds.tree &amp;lt;- trees
head(ds.tree)
mean(ds.tree$Girth)
median(ds.tree$Girth)
mean(ds.tree$Girth, trim=0.15)
sd(ds.tree$Girth)
boxplot(ds.tree$Girth, main=&quot;나무 지름&quot;)
hist(ds.tree$Height)
boxplot(ds.tree$Height)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 07&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747293930483&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#07
ds.orange &amp;lt;- Orange
head(ds.orange)
summary(ds.orange$age)
mean(ds.orange$age, trim=0.15)
boxplot(ds.orange$age~ds.orange$Tree)
hist(ds.orange$circumference[ds.orange$Tree !=2])
boxplot(ds.orange$circumference~ds.orange$Tree)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/빅데이터</category>
      <category>모두를위한r데이터분석2판</category>
      <category>모두를위한r데이터분석입문</category>
      <category>모두를위한r데이터분석입문답</category>
      <category>연습문제답</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/22</guid>
      <comments>https://minigameworld.tistory.com/22#entry22comment</comments>
      <pubDate>Thu, 15 May 2025 18:26:09 +0900</pubDate>
    </item>
    <item>
      <title>[모두를 위한 R 데이터 분석 입문] chap04 - 연습문제 풀이</title>
      <link>https://minigameworld.tistory.com/21</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제 번호는 주석에 달아놨습니다. 틀린 부분은 댓글로 알려주시면 수정하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 01&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747198182545&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#(1)
nums = 0
cnt = 0
for(i in 1:100){
  if(i%%3==0){
    nums &amp;lt;- nums + i
    cnt &amp;lt;- cnt + 1
  }
}
print(c(nums, cnt))

#(2)
for(i in 101:200){
  if(i%%12==0){
    print(i)
  }
}

#(3)
for(i in 1:24){
  if(24%%i==0){
    print(i)
  }
}

#(4)
fac &amp;lt;- 1
for(i in 1:10){
  fac &amp;lt;- fac * i
}
print(fac)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 02&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747198205416&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(i in 1:6){
  cat(strrep(&quot;*&quot;, i), &quot;\n&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 03&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747198472996&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;i&amp;lt;-1
num &amp;lt;- 0
sum &amp;lt;- 0
while(i&amp;lt;10){
  num &amp;lt;- i*i
  sum &amp;lt;- sum + num
  i &amp;lt;- i + 1
}
print(sum)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 04&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747198539118&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;score &amp;lt;- 80
result &amp;lt;- ifelse(score&amp;gt;60, 'Pass', 'Fail')
print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 05&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747199559625&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nums &amp;lt;- 2:1000
prime &amp;lt;- c()
while (length(nums)&amp;gt;0) {
  p&amp;lt;- nums[1]
  prime &amp;lt;- c(prime, p)
  nums&amp;lt;- nums[nums %%p !=0]
}
print(prime)

#에라토스테네스의 체 원리로 배수를 삭제하는 식으로 짜봤어요!&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 06&lt;/p&gt;
&lt;pre id=&quot;code_1747200781340&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;numlist &amp;lt;- c(0,1)
while (length(numlist)&amp;lt;40){
  next_num &amp;lt;- numlist[length(numlist)] + numlist[length(numlist)-1]
  numlist &amp;lt;- c(numlist, next_num)
}
print(numlist)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 07&lt;/p&gt;
&lt;pre id=&quot;code_1747200906106&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#(1), (2)
apply(iris[,1:4], 1, sum)
apply(iris[,1:4], 2, max)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 08&lt;/p&gt;
&lt;pre id=&quot;code_1747201029018&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apply(mtcars, 2, sum)
apply(mtcars, 2, max)
apply(mtcars, 2, sd)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 09&lt;/p&gt;
&lt;pre id=&quot;code_1747201335129&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lgm &amp;lt;- function(x, y){
  while(y !=0){
    temp &amp;lt;- y
    y &amp;lt;- x %% y
    x &amp;lt;- temp
  }
  return(x)
}
lgm(10, 8)
lgm(10, 20)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 10&lt;/p&gt;
&lt;pre id=&quot;code_1747201666849&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;maxmin &amp;lt;- function(v) {
  maxnum&amp;lt;- which.max(v)
  minnum&amp;lt;-which.min(v)
  
  return (list(max=v[maxnum], min=v[minnum]))
}

v1 &amp;lt;- c(7,1,2,8,9)
result &amp;lt;- maxmin(v1)
result$max
result$min&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 11&lt;/p&gt;
&lt;pre id=&quot;code_1747202084833&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;weight &amp;lt;- c(69, 50, 55, 71, 89, 64, 59, 70,71,80)
which.max(weight)
which.min(weight)
which(weight &amp;lt; 69 &amp;amp; weight &amp;gt; 61)
weight.2 &amp;lt;- subset(weight,weight &amp;lt;= 60)
weight.2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습문제 12&lt;/p&gt;
&lt;pre id=&quot;code_1747202416638&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#(1)
idx&amp;lt;- which.max(mtcars$mpg)
mtcars[idx,]

#(2)
idx2&amp;lt;-which(mtcars$wt &amp;gt;2 &amp;amp; mtcars$wt &amp;lt;3)
mtcars[idx2,]

#(3)
idx3&amp;lt;- which(mtcars$gear ==3 )
apply(mtcars[idx3,], 2, mean)

#(4)
idx4&amp;lt;-which(mtcars$wt &amp;gt;=5)
apply(mtcars[idx4,], 2, max)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터분석가로 살아남기/빅데이터</category>
      <category>모두를위한r데이터분석2판</category>
      <category>모두를위한r데이터분석연습문제</category>
      <category>연습문제답</category>
      <category>한빛아카데미</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/21</guid>
      <comments>https://minigameworld.tistory.com/21#entry21comment</comments>
      <pubDate>Wed, 14 May 2025 18:05:07 +0900</pubDate>
    </item>
    <item>
      <title>[모두를 위한 R 데이터 분석 입문] chap03 - 연습문제 풀이</title>
      <link>https://minigameworld.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 혼자 공부하면서 작성한 내용으로 틀린 부분은 댓글로 알려주시면 수정하겠습니다*&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 02&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747033895123&quot; class=&quot;r&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;r&quot;&gt;&lt;code&gt;st &amp;lt;- data.frame(state.x77)
st
colnames(st)
rownames(st)
dim(st)
str(st)
colSums(st)
rowSums(st)
colMeans(st)
rowMeans(st)
st[&quot;Florida&quot;,]
st[, &quot;Income&quot;]
st[&quot;Texas&quot;,&quot;Area&quot;]
st[&quot;Ohio&quot;, c(1,2)]
subset(st, Population &amp;gt;= 5000)
subset(st, Income &amp;gt;=4500, select= c(&quot;Population&quot;,&quot;Income&quot;, &quot;Area&quot;))
sum(st$Income&amp;gt;=4500)
subset(st, Area&amp;gt;=100000 &amp;amp; Frost&amp;lt;=120)
subset(st, Population &amp;lt;2000 &amp;amp; Murder &amp;lt;12)
mean(st$Income[st$Illiteracy &amp;gt;=2.0])
mean(st$Income[st$Illiteracy &amp;lt;=2.0]) - mean(st$Income[st$Illiteracy &amp;gt;=2.0])
subset(st, Life.Exp == max(st$Life.Exp))
subset(st, Income &amp;gt; st[&quot;Pennsylvania&quot;, &quot;Income&quot;])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 03&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747034595370&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name &amp;lt;- c(&quot;Tom&quot;, &quot;Jane&quot;, &quot;Nick&quot;)
age &amp;lt;- c(20, 23, 26)
gender &amp;lt;- c(&quot;M&quot;, &quot;F&quot;, &quot;M&quot;)
height &amp;lt;- c(180, 160, 175)
student &amp;lt;- c(TRUE, TRUE, FALSE)
human &amp;lt;- data.frame(name, age, gender, height, student)
human
new_row &amp;lt;- list (
  name = &quot;Mary&quot;,
  age = 24,
  gender = &quot;F&quot;, 
  height = 155,
  student = TRUE
)
human &amp;lt;- rbind(human, new_row)
human
str(human)
mean(human$age)
mean(human$height)
names(human)[-4]
table(human$gender)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 04&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747035289387&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class(airquality)
head(airquality)
subset(airquality, Temp == max(airquality$Temp))
subset(airquality, airquality$Month == 6 &amp;amp; Wind == max(airquality$Wind))
mean(airquality$Temp[airquality$Month == 7])
mean(airquality$Ozone[airquality$Month ==5], na.rm=T)
sum(airquality$Ozone&amp;gt;100, na.rm=T)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;연습문제 05&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1747036303702&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;str(swiss)
swiss[swiss$Agriculture == max(swiss$Agriculture), ]
swiss[order(swiss$Agriculture, decreasing = T),]
subset(swiss$Agriculture, swiss$Catholic &amp;gt;=80)
subset_data &amp;lt;- subset(swiss, Examination &amp;lt; 20 &amp;amp; Agriculture &amp;lt; 50)
data.frame(
  Region = rownames(subset_data),
  Examination = subset_data$Examination,
  Agriculture = subset_data$Agriculture
)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터분석가로 살아남기/빅데이터</category>
      <category>r데이터분석입문 #연습문제답 #연습문제풀이 #chap3 #매트릭스와데이터프레임 #모두를위한r데이터분석입문</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/20</guid>
      <comments>https://minigameworld.tistory.com/20#entry20comment</comments>
      <pubDate>Mon, 12 May 2025 18:52:36 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 리트허브 폴더 수정하기, 백준허브처럼 상위 폴더 만들기</title>
      <link>https://minigameworld.tistory.com/19</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;야심차게 리트허브를 설치하고 커밋을 했는데...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 생성된다....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUoZcH/btsNt0x6li1/ej6KHeoUzurWErqzkAAGNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUoZcH/btsNt0x6li1/ej6KHeoUzurWErqzkAAGNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUoZcH/btsNt0x6li1/ej6KHeoUzurWErqzkAAGNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUoZcH%2FbtsNt0x6li1%2Fej6KHeoUzurWErqzkAAGNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;890&quot; height=&quot;168&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내가 원한건&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;코딩 연습 폴더 하위에 백준, 프로그래머스, 리트코드 이렇게 있고, 각 폴더마다 문제가 들어가는 형태를 원했는데...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;찾아보니까 나같은 문제를 겪으신 고수님들이 방법을 아주아주 친절하게 설명해주셨다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;깃헙 잘 쓸 줄 모르는 나도 설치하였으니 다들 잘 따라하면 가능할듯!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/raphaelheinz/LeetHub-3.0&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1745220449376&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - raphaelheinz/LeetHub-3.0: Automatically push your LeetCode solutions to your GitHub repository&quot; data-og-description=&quot;Automatically push your LeetCode solutions to your GitHub repository - raphaelheinz/LeetHub-3.0&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot; data-og-url=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ceNQgC/hyYCaw42s2/ouAlKNJJkQtOgRzpaddvSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/cbXRSD/hyYJB0HRUB/aySJUdMhk7JBPSqPXioWEk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ceNQgC/hyYCaw42s2/ouAlKNJJkQtOgRzpaddvSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/cbXRSD/hyYJB0HRUB/aySJUdMhk7JBPSqPXioWEk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - raphaelheinz/LeetHub-3.0: Automatically push your LeetCode solutions to your GitHub repository&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Automatically push your LeetCode solutions to your GitHub repository - raphaelheinz/LeetHub-3.0&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 내가 사용한 건 리트허브 ver 3이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 제일 최신버전 같아서 이걸로 시도했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;readme를 보면, 아래처럼 매뉴얼하게 설치하는 방법이 있는데 이걸 그대로 따라하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVXrlN/btsNul9Az61/qctBfzzCF1l6UsqLBvI7u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVXrlN/btsNul9Az61/qctBfzzCF1l6UsqLBvI7u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVXrlN/btsNul9Az61/qctBfzzCF1l6UsqLBvI7u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVXrlN%2FbtsNul9Az61%2FqctBfzzCF1l6UsqLBvI7u1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;821&quot; height=&quot;427&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1단계: GitHub OAuth 앱 만들기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;257&quot; data-start=&quot;146&quot;&gt;링크로 이동: &lt;a href=&quot;https://github.com/settings/applications/new&quot;&gt;https://github.com/settings/applications/new&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;451&quot; data-start=&quot;259&quot;&gt;아래 항목을 입력:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;451&quot; data-start=&quot;276&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;323&quot; data-start=&quot;276&quot;&gt;&lt;b&gt;Application name&lt;/b&gt;: 원하는 이름 (예: MyLeetHub)&lt;/li&gt;
&lt;li data-end=&quot;392&quot; data-start=&quot;327&quot;&gt;&lt;b&gt;Homepage URL&lt;/b&gt;: &lt;a href=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot;&gt;https://github.com/raphaelheinz/LeetHub-3.0&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;451&quot; data-start=&quot;396&quot;&gt;&lt;b&gt;Authorization callback URL&lt;/b&gt;: &lt;a href=&quot;https://github.com/&quot;&gt;https://github.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;519&quot; data-start=&quot;453&quot;&gt;완료되면 CLIENT_ID와 CLIENT_SECRET이 생성되는데 메모장에 기록해두기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;519&quot; data-start=&quot;453&quot;&gt;저는 이 과정에서 CLIENT_SECRET이 없어서 옆에 새로 만들기 버튼 클릭해서 새로 받았어요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2단계: 프로젝트 다운로드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;657&quot; data-start=&quot;547&quot;&gt;링크로 이동: &lt;a href=&quot;https://github.com/raphaelheinz/LeetHub-3.0&quot;&gt;https://github.com/raphaelheinz/LeetHub-3.0&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;779&quot; data-start=&quot;761&quot;&gt;이건 해당링크에 있는걸 매뉴얼하게 zip파일로 다운받거나 git 클론을 하심 되는데 저는 git clone을 하였어요&lt;/li&gt;
&lt;li data-end=&quot;779&quot; data-start=&quot;761&quot;&gt;cmd를 여시고 아래를 입력해줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1745220699489&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/raphaelheinz/LeetHub-3.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXU5Pq/btsNpTtpO5M/WIdDBLl7TrjufDgxzDvku0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXU5Pq/btsNpTtpO5M/WIdDBLl7TrjufDgxzDvku0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXU5Pq/btsNpTtpO5M/WIdDBLl7TrjufDgxzDvku0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXU5Pq%2FbtsNpTtpO5M%2FWIdDBLl7TrjufDgxzDvku0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;667&quot; height=&quot;157&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;디렉터리를 이동하지 않고 그냥 설치해서 저는 C 드라이브에 설치가 되었습니다!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;3단계&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;압축을 푼 폴더로 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1745220911421&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd LeetHub 3.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음 명령어 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1745220951941&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm run setup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;했는데 글쎄 저는 이런게 뜨지 뭐에요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PVgBT/btsNuvD5VbW/ke3TlZ0Cfk6iISaFXOJMmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PVgBT/btsNuvD5VbW/ke3TlZ0Cfk6iISaFXOJMmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PVgBT/btsNuvD5VbW/ke3TlZ0Cfk6iISaFXOJMmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPVgBT%2FbtsNuvD5VbW%2Fke3TlZ0Cfk6iISaFXOJMmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;54&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 뭔소리야 싶어서 영원한 친구 gpt에서 물어봤더니 Node.js가 없어서 그렇다네요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 Node.js 를 설치하러 출발했답니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4단계: Node.js 설치 후 다시 시도&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://nodejs.org/en&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://nodejs.org/en&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1745221029417&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Node.js &amp;mdash; Run JavaScript Everywhere&quot; data-og-description=&quot;Node.js&amp;reg; is a JavaScript runtime built on Chrome's V8 JavaScript engine.&quot; data-og-host=&quot;nodejs.org&quot; data-og-source-url=&quot;https://nodejs.org/en&quot; data-og-url=&quot;https://nodejs.org/en&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KyHGf/hyYG08Tvol/bzZqmElXDpneDSggzTbWxK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/IwGww/hyYIc0YwSo/jRknAMgubuDi4AKCMPP1CK/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256&quot;&gt;&lt;a href=&quot;https://nodejs.org/en&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nodejs.org/en&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KyHGf/hyYG08Tvol/bzZqmElXDpneDSggzTbWxK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/IwGww/hyYIc0YwSo/jRknAMgubuDi4AKCMPP1CK/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Node.js &amp;mdash; Run JavaScript Everywhere&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Node.js&amp;reg; is a JavaScript runtime built on Chrome's V8 JavaScript engine.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nodejs.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 몰라서 그냥 디폴트 세팅으로 설치했어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLu21o/btsNr0E2z18/xlorqKlmIiTqEitt2Y0Dx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLu21o/btsNr0E2z18/xlorqKlmIiTqEitt2Y0Dx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLu21o/btsNr0E2z18/xlorqKlmIiTqEitt2Y0Dx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLu21o%2FbtsNr0E2z18%2FxlorqKlmIiTqEitt2Y0Dx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;490&quot; height=&quot;382&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 다시 한번 시도해볼건데요. 기존 cmd 창을 닫고 새로 시작한 뒤에, 디렉터리를 다시 leethub로 옮겨준 후 npm 명령어를 다시 시도했더니 되더라구요! (잘 하고 있는거 맞나..)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;5단계: OAuth 정보 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 코드파일을 열어서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1119&quot; data-start=&quot;1096&quot;&gt;src/js/authorize.js&lt;/li&gt;
&lt;li data-end=&quot;1143&quot; data-start=&quot;1123&quot;&gt;src/js/oauth2.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 파일 안에 있는 클라이언트 아이디와 시크릿 부분을 수정했어요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;6단계: leetcode.js 파일 내용 수정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 leetcode.js 파일을 열어서 const URL 부분에 있는 경로를 수정해줄거에요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 봤더니 여기 왜 주석처리 되어 있을까요..?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMqaIU/btsNtkc7Alt/4nY7mNpkgwR5w5HQQrVD41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMqaIU/btsNtkc7Alt/4nY7mNpkgwR5w5HQQrVD41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMqaIU/btsNtkc7Alt/4nY7mNpkgwR5w5HQQrVD41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMqaIU%2FbtsNtkc7Alt%2F4nY7mNpkgwR5w5HQQrVD41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;690&quot; height=&quot;189&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정을 도대체 어디를 해야하는걸까아....?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고민하다가 같은 파일에서 constructGitHubPath 함수를 정의한 부분을 발견했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAVyUa/btsNqoNtCJU/urh5YaLok1yvEK3Q3RF8J1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAVyUa/btsNqoNtCJU/urh5YaLok1yvEK3Q3RF8J1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAVyUa/btsNqoNtCJU/urh5YaLok1yvEK3Q3RF8J1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAVyUa%2FbtsNqoNtCJU%2Furh5YaLok1yvEK3Q3RF8J1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;782&quot; height=&quot;130&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;냅다 리트코드 추가. 이거 해보고 되는지 안되는지 알려드릴게요 여러분들&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가할만한 곳이 저기밖에 없었다....제발 되었으면 좋겠네요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 저장을 하고~&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;7단계: 개발자모드에서 확장프로그램 로드하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크롬브라우저에서 오른쪽 상단 퍼즐 모양 버튼을 누르면 확장프로그램이 열리는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기서 개발자 모드를 체크해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGuFhW/btsNtrJN1kY/nZ4KRlRRICL9KNhgoor3B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGuFhW/btsNtrJN1kY/nZ4KRlRRICL9KNhgoor3B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGuFhW/btsNtrJN1kY/nZ4KRlRRICL9KNhgoor3B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGuFhW%2FbtsNtrJN1kY%2FnZ4KRlRRICL9KNhgoor3B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1256&quot; height=&quot;118&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요렇게!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 저 압축해제된 확장프로그램을 로드합니다. 를 눌러준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LeetCode 3.0 디렉터리를 찾아 클릭해주면!!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnFp76/btsNt1qk91o/jf81rmN2Y69Fvuj1cg2aa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnFp76/btsNt1qk91o/jf81rmN2Y69Fvuj1cg2aa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnFp76/btsNt1qk91o/jf81rmN2Y69Fvuj1cg2aa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnFp76%2FbtsNt1qk91o%2Fjf81rmN2Y69Fvuj1cg2aa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;426&quot; height=&quot;231&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오 일단 뭔가 추가가 되긴 되었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리트코드에서 문제를 한번 풀어봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clDdaq/btsNs7KtE8c/iDN3XA1gT9g6mdVic5vKC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clDdaq/btsNs7KtE8c/iDN3XA1gT9g6mdVic5vKC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clDdaq/btsNs7KtE8c/iDN3XA1gT9g6mdVic5vKC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclDdaq%2FbtsNs7KtE8c%2FiDN3XA1gT9g6mdVic5vKC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;852&quot; height=&quot;210&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저렇게 LeetCode 폴더가 생겼고, 폴더를 열어보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blhMfj/btsNsSnNw8V/R0HRHjoIByfOL3cWzCbYqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blhMfj/btsNsSnNw8V/R0HRHjoIByfOL3cWzCbYqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blhMfj/btsNsSnNw8V/R0HRHjoIByfOL3cWzCbYqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblhMfj%2FbtsNsSnNw8V%2FR0HRHjoIByfOL3cWzCbYqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1227&quot; height=&quot;215&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흐어어엉 내가 원하는대로 그 하위로 각 문제 풀이들이 들어가있다ㅠㅠㅠㅠ엉엉&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 참고한 고수님의 블로그는 아래 블로그입니다.&lt;/p&gt;
&lt;figure id=&quot;og_1745222614114&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;내 코드가 성공했을 때, 문제와 코드가 github에 자동 푸시되도록 만들기 (LeetCode, 백준, 프로그래&quot; data-og-description=&quot;- 한 레포에 모든 코테 결과 오토푸시하기 LeetCode(LeetHub) + 백준, 프로그래머스(백준허브)서론쉴때는 쉬어야지그치만 할때는 해야한다 (?)&amp;nbsp;주로 책, 노트와 펜으로 공부를 해서 대부분의 기록들은&quot; data-og-host=&quot;www.nosilv.com&quot; data-og-source-url=&quot;https://www.nosilv.com/entry/%EB%82%B4-%EC%BD%94%EB%93%9C%EA%B0%80-%EC%84%B1%EA%B3%B5%ED%96%88%EC%9D%84-%EB%95%8C-%EB%AC%B8%EC%A0%9C%EC%99%80-%EC%BD%94%EB%93%9C%EA%B0%80-github%EC%97%90-%EC%9E%90%EB%8F%99-%ED%91%B8%EC%8B%9C%EB%90%98%EB%8F%84%EB%A1%9D-%EB%A7%8C%EB%93%A4%EA%B8%B0-LeetCode-%EB%B0%B1%EC%A4%80-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%84%EB%B6%80-%ED%95%9C-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EC%97%90&quot; data-og-url=&quot;https://www.nosilv.com/entry/%EB%82%B4-%EC%BD%94%EB%93%9C%EA%B0%80-%EC%84%B1%EA%B3%B5%ED%96%88%EC%9D%84-%EB%95%8C-%EB%AC%B8%EC%A0%9C%EC%99%80-%EC%BD%94%EB%93%9C%EA%B0%80-github%EC%97%90-%EC%9E%90%EB%8F%99-%ED%91%B8%EC%8B%9C%EB%90%98%EB%8F%84%EB%A1%9D-%EB%A7%8C%EB%93%A4%EA%B8%B0-LeetCode-%EB%B0%B1%EC%A4%80-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%84%EB%B6%80-%ED%95%9C-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EC%97%90&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UiBXc/hyYIjeJaBi/gDmt9jqgXuK2168BXuEPz0/img.png?width=800&amp;amp;height=743&amp;amp;face=0_0_800_743,https://scrap.kakaocdn.net/dn/fVevE/hyYFERoTm6/wNDxNBQLbJOl0XU3Kj0qJ1/img.png?width=800&amp;amp;height=743&amp;amp;face=0_0_800_743,https://scrap.kakaocdn.net/dn/ddFoj2/hyYIfQUNq6/j2h7A6ytQ5mPaBc4fI5ngk/img.png?width=3348&amp;amp;height=1570&amp;amp;face=0_0_3348_1570&quot;&gt;&lt;a href=&quot;https://www.nosilv.com/entry/%EB%82%B4-%EC%BD%94%EB%93%9C%EA%B0%80-%EC%84%B1%EA%B3%B5%ED%96%88%EC%9D%84-%EB%95%8C-%EB%AC%B8%EC%A0%9C%EC%99%80-%EC%BD%94%EB%93%9C%EA%B0%80-github%EC%97%90-%EC%9E%90%EB%8F%99-%ED%91%B8%EC%8B%9C%EB%90%98%EB%8F%84%EB%A1%9D-%EB%A7%8C%EB%93%A4%EA%B8%B0-LeetCode-%EB%B0%B1%EC%A4%80-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%84%EB%B6%80-%ED%95%9C-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EC%97%90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.nosilv.com/entry/%EB%82%B4-%EC%BD%94%EB%93%9C%EA%B0%80-%EC%84%B1%EA%B3%B5%ED%96%88%EC%9D%84-%EB%95%8C-%EB%AC%B8%EC%A0%9C%EC%99%80-%EC%BD%94%EB%93%9C%EA%B0%80-github%EC%97%90-%EC%9E%90%EB%8F%99-%ED%91%B8%EC%8B%9C%EB%90%98%EB%8F%84%EB%A1%9D-%EB%A7%8C%EB%93%A4%EA%B8%B0-LeetCode-%EB%B0%B1%EC%A4%80-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A0%84%EB%B6%80-%ED%95%9C-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EC%97%90&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UiBXc/hyYIjeJaBi/gDmt9jqgXuK2168BXuEPz0/img.png?width=800&amp;amp;height=743&amp;amp;face=0_0_800_743,https://scrap.kakaocdn.net/dn/fVevE/hyYFERoTm6/wNDxNBQLbJOl0XU3Kj0qJ1/img.png?width=800&amp;amp;height=743&amp;amp;face=0_0_800_743,https://scrap.kakaocdn.net/dn/ddFoj2/hyYIfQUNq6/j2h7A6ytQ5mPaBc4fI5ngk/img.png?width=3348&amp;amp;height=1570&amp;amp;face=0_0_3348_1570');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;내 코드가 성공했을 때, 문제와 코드가 github에 자동 푸시되도록 만들기 (LeetCode, 백준, 프로그래&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;- 한 레포에 모든 코테 결과 오토푸시하기 LeetCode(LeetHub) + 백준, 프로그래머스(백준허브)서론쉴때는 쉬어야지그치만 할때는 해야한다 (?)&amp;nbsp;주로 책, 노트와 펜으로 공부를 해서 대부분의 기록들은&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.nosilv.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 여기에서는 바로 링크를 수정하셨는데,, 제가 수정하려고 보니 저는 함수로 들어가 있어서 저는 함수를 수정했다는 점이 달라요!&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/트래블슈팅</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/19</guid>
      <comments>https://minigameworld.tistory.com/19#entry19comment</comments>
      <pubDate>Mon, 21 Apr 2025 18:04:19 +0900</pubDate>
    </item>
    <item>
      <title>[R] 패키지 다운로드 시 오류 SSL connect error, packages are not available for this version of R /  패키지 수동설치하기</title>
      <link>https://minigameworld.tistory.com/16</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;R을 설치하고 install.package(&quot;tidyverse&quot;)를 했는데&lt;/p&gt;
&lt;pre id=&quot;code_1742430381277&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; install.packages(&quot;tidyverse&quot;)
Warning: unable to access index for repository https://cran.yu.ac.kr/src/contrib:
  cannot open URL 'https://cran.yu.ac.kr/src/contrib/PACKAGES'
Warning: unable to access index for repository https://cran.yu.ac.kr/bin/windows/contrib/4.4:
  cannot open URL 'https://cran.yu.ac.kr/bin/windows/contrib/4.4/PACKAGES'
Warning message:
package 'tidyverse' is not available for this version of R

A version of this package for your version of R might be available elsewhere,
see the ideas at
https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 오류가 생기는 것이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CRAN 페이지에서 패키지 이름 확인 및 재설치 시도&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cran.yu.ac.kr/web/packages/available_packages_by_name.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cran.yu.ac.kr/web/packages/available_packages_by_name.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742432306824&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CRAN: Available Packages By Name&quot; data-og-description=&quot;&quot; data-og-host=&quot;cran.yu.ac.kr&quot; data-og-source-url=&quot;https://cran.yu.ac.kr/web/packages/available_packages_by_name.html&quot; data-og-url=&quot;https://cran.yu.ac.kr/web/packages/available_packages_by_name.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://cran.yu.ac.kr/web/packages/available_packages_by_name.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cran.yu.ac.kr/web/packages/available_packages_by_name.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CRAN: Available Packages By Name&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cran.yu.ac.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기에 들어가면 패키지 이름들이 정렬이 되어 있는데, 내가 설치하려고 하는 패키지를 찾아봤다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;tidyverse를 찾아 클릭해보면 해당 패키지에 대한 설명이 나온다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;호환되는 R 버전은 3.3 이상이라는데.. 근데 내 R은 4.4.3이라고....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJBzMW/btsMP42ggQ7/QKqIidUfryqEhukjtRgniK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJBzMW/btsMP42ggQ7/QKqIidUfryqEhukjtRgniK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJBzMW/btsMP42ggQ7/QKqIidUfryqEhukjtRgniK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJBzMW%2FbtsMP42ggQ7%2FQKqIidUfryqEhukjtRgniK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;247&quot; height=&quot;41&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw1oBx/btsMQceQHAB/QUY0tglVHGCc8QPrfNA6C0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw1oBx/btsMQceQHAB/QUY0tglVHGCc8QPrfNA6C0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw1oBx/btsMQceQHAB/QUY0tglVHGCc8QPrfNA6C0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw1oBx%2FbtsMQceQHAB%2FQUY0tglVHGCc8QPrfNA6C0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1570&quot; height=&quot;705&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 아래쪽을 보면 패키지 소스가 있다. 이걸 활용해서 다시 install해보기로 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6PYFY/btsMQpye70c/akkPMfAGZPHwA2MbDtOKv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6PYFY/btsMQpye70c/akkPMfAGZPHwA2MbDtOKv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6PYFY/btsMQpye70c/akkPMfAGZPHwA2MbDtOKv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6PYFY%2FbtsMQpye70c%2FakkPMfAGZPHwA2MbDtOKv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;310&quot; height=&quot;67&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하이퍼링크 된 부분에 마우스우클릭하면 링크 복사가 되는데 이걸로 경로를 직접 설정해서 다운로드를 시도해봤다.&lt;/p&gt;
&lt;pre id=&quot;code_1742431725822&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;install.packages(&quot;https://cran.yu.ac.kr/src/contrib/tidyverse_2.0.0.tar.gz&quot;, repos=NULL, type=&quot;source&quot;)

install.packages(&quot;https://cran.yu.ac.kr/bin/windows/contrib/4.4/tidyverse_2.0.0.zip&quot;, repos = NULL, type = &quot;win.binary&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게. 근데 또 오류남.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;CRAN 미러를 글로벌로 바꿔보기도 하고 먼나라이웃나라 가리지 않고 바꿔보고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;zip파일로도 경로를 바꿔보고 온갖 짓을 다 했는데도 다운로드가 안되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 깨달았다. 내가 문제가 아니라는걸.&lt;/p&gt;
&lt;pre id=&quot;code_1742431952943&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;In download.file(p, destfile, method, mode = &quot;wb&quot;, ...) :
  URL 'https://cran.yu.ac.kr/src/contrib/tidyverse_2.0.0.tar.gz': status was 'SSL connect error'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SSL 연결문제로 다운로드가 불가능하다고 하는 메시지가 출력됐다. 회사 네트워크라 차단되는 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내맘대로 SSL 인증 비활성화를 할 수는 없어서...선택한 방법.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;R 패키지가 회사 네트워크라 설치가 안되시는 분들은 이렇게 해보세요~~~!&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;패키지 수동설치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.&amp;nbsp; 아까 그 패키지 이름 목록으로 들어간다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YOdo8/btsMP1kl1yR/RWERLpbMPyU1O7zeZkmLSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YOdo8/btsMP1kl1yR/RWERLpbMPyU1O7zeZkmLSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YOdo8/btsMP1kl1yR/RWERLpbMPyU1O7zeZkmLSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYOdo8%2FbtsMP1kl1yR%2FRWERLpbMPyU1O7zeZkmLSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;402&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 원하는 패키지를 클릭 후 zip 파일을 &lt;/b&gt;&lt;b&gt;내 컴퓨터에 다운로드 한다.(윈도우 기준)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yyy2M/btsMPJjUvia/k0LuBKblv2JeuAn2KNfK11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yyy2M/btsMPJjUvia/k0LuBKblv2JeuAn2KNfK11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yyy2M/btsMPJjUvia/k0LuBKblv2JeuAn2KNfK11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyyy2M%2FbtsMPJjUvia%2Fk0LuBKblv2JeuAn2KNfK11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;330&quot; height=&quot;154&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 다운로드한 경로를 복사해서 install 다시 시도&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1742432765618&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;install.packages(&quot;C:/Users/user/Downloads/tidyverse_2.0.0.zip&quot;, repos = NULL, type = &quot;win.binary&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 경로 부분에 내가 다운로드한 파일의 경로를 지정해주면~~~~!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;44&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbA8Sr/btsMPwSxgNh/C2wOmRpEWa9o4y2DtaAFnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbA8Sr/btsMPwSxgNh/C2wOmRpEWa9o4y2DtaAFnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbA8Sr/btsMPwSxgNh/C2wOmRpEWa9o4y2DtaAFnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbA8Sr%2FbtsMPwSxgNh%2FC2wOmRpEWa9o4y2DtaAFnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;44&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;44&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;드디어 다운로드 완료했다.. 진짜 이렇게 하나하나 설치해줘야한다고,,,? 진짜..? 하...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. zip파일을 R라이브러리에 다운받아놓고 압축을 푸는 방법도 시도해봤다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yXBiN/btsMRc58tgC/xog3JjwTFirwWBRNfr0kAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yXBiN/btsMRc58tgC/xog3JjwTFirwWBRNfr0kAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yXBiN/btsMRc58tgC/xog3JjwTFirwWBRNfr0kAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyXBiN%2FbtsMRc58tgC%2Fxog3JjwTFirwWBRNfr0kAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;171&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 압축폴더를 다운받아놓고 압축을 해제한뒤에 라이브러리 불러오기를 해봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;171&quot; data-origin-height=&quot;47&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3wvG7/btsMPyQnfuD/kk8DXf5kt9sTynYLJHt4c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3wvG7/btsMPyQnfuD/kk8DXf5kt9sTynYLJHt4c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3wvG7/btsMPyQnfuD/kk8DXf5kt9sTynYLJHt4c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3wvG7%2FbtsMPyQnfuD%2Fkk8DXf5kt9sTynYLJHt4c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;171&quot; height=&quot;47&quot; data-origin-width=&quot;171&quot; data-origin-height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;된다!!! 이게 차라리 편할지도...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하나하나 필요한 거 압축해제하다보면 언젠가는 필요한 패키지를 모두 얻게 되지 않을까.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;혹시 더 효율적인 방법을 알고 있는 분이 계시다면 제발 꼭 저에게 알려주세요.&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/트래블슈팅</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/16</guid>
      <comments>https://minigameworld.tistory.com/16#entry16comment</comments>
      <pubDate>Thu, 20 Mar 2025 18:29:08 +0900</pubDate>
    </item>
    <item>
      <title>[Python] parallel_apply() 함수 사용 시 pandas import 문제 해결 : NameError: not defined error</title>
      <link>https://minigameworld.tistory.com/14</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #6164c6;&quot;&gt;혼자 공부하면서 작성하는 글입니다. 더 효율적인 해결방법이 있거나 오류가 있다면 댓글 남겨주세요~!&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Parallel_apply() 사용 시 NameError 해결 1&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;parallel 함수를 사용하며 worker 프로세스에서도 모듈을 정의해줘야 한다는 사실을 알았다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;처음에 코드를 다음과 같이 작성했는데, NameError: re not defined가 떴다. 분명 처음에 import를 했는데.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738629815934&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#에러코드
def remove_one_char_words(text):
    cleaned_text = re.sub(r'\b[가-힣]\b', '', text)
    cleaned_text = re.sub(r'\s+', ' ', cleaned_text).strip()
    
    return cleaned_text

df['cleaned'] = df['split_sentence'].parallel_apply(remove_one_char_words)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그래서 찾아보니까 worker프로세스에서는 메인프로세스에서 import한 전역변수를 공유하지 않는다고..&lt;/span&gt;&lt;span&gt;2가지 방법을 사용할 수 있을 것 같더라.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;1. 함수 내부에서 모듈 import&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;2. 전체 모듈이 있는 스크립트 실행('__main__')&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;노트북 파일로 작업하고 있어서 2번도 가능할 것 같지만 그냥 간단하고 확실한 방법을 선택했다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738630063651&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#해결 코드
def remove_one_char_words(text):
    import re
    cleaned_text = re.sub(r'\b[가-힣]\b', '', text)
    cleaned_text = re.sub(r'\s+', ' ', cleaned_text).strip()
    
    return cleaned_text

df['cleaned'] = df['split_sentence'].parallel_apply(remove_one_char_words)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;짜잔 초심플 해결 완&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;근데 또 다른 문제가 발생했다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Parallel_apply() 사용 시 NameError 해결 2&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이렇게 Okt도 임포트해주고 당연히 될거라고 생각했는데..!&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738630157609&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#에러코드
def tokens_sep(text, stopwords= stopword_path):
    from konlpy.tag import Okt
    
    okt = Okt()
    tags = okt.pos(text, stem=True)
    
    nouns = [word for word, tag in tags if tag =='Noun']
    verbs = [word for word, tag in tags if tag == 'Verb']
    adjs = [word for word, tag in tags if tag == 'Adjective']
    
    return nouns, verbs, adjs

df[['nouns', 'verbs', 'adjs']] = df['cleaned'].parallel_apply(lambda x:pd.Series(tokens_sep(x), index=['nouns','verbs', 'adjs']))&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; NameError: name 'pd' is not defined&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;라는 에러가 떴다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;람다식 안에, 만들어진 리스트를 시리즈로 가지고 오는 작업을 했는데 요기서 pandas를 가져오지 못했다. 우씨.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 이건 그냥 반환값을 시리즈로 바로 하도록 수정해줬다.&lt;/span&gt;&lt;/span&gt;&lt;s&gt;&lt;span style=&quot;color: #ee2323; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메인함수를 만들면 이럴 일이 없을텐데..&lt;/span&gt;&lt;/span&gt;&lt;/s&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738631019297&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#수정코드
def tokens_sep(text, stopwords= stopword_path):
    import pandas as pd
    from konlpy.tag import Okt
    
    okt = Okt()
    tags = okt.pos(text, stem=True)
    
    nouns = [word for word, tag in tags if tag =='Noun']
    verbs = [word for word, tag in tags if tag == 'Verb']
    adjs = [word for word, tag in tags if tag == 'Adjective']
    
    return pd.Series({'nouns': nouns, 'verbs':verbs, 'adjs':adjs})

df[['nouns', 'verbs', 'adjs']] = df['cleaned'].parallel_apply(tokens_sep)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이제 잘 된다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;앞으로 요런 오류가 발생하면, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;간단한 작업이면 그냥 함수 내에 모듈 임포트 하고 이 외에는 메인함수를 만들면 좋을 것 같다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/트래블슈팅</category>
      <category>parallel_apply</category>
      <category>parallel함수</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/14</guid>
      <comments>https://minigameworld.tistory.com/14#entry14comment</comments>
      <pubDate>Tue, 4 Feb 2025 10:04:58 +0900</pubDate>
    </item>
    <item>
      <title>[논문 - 빅데이터] 빅데이터를 활용한 스마트 관광도시 사례 분석 연구: 제주특별자치도 관광객 데이터를 중심으로</title>
      <link>https://minigameworld.tistory.com/11</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;개인적으로 읽으며 정리한 내용입니다. 자세한 내용은 원문에서 확인하세요!&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;  논문 정보&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h4 id=&quot;APA&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문준환, 김성현, 노희섭 and 구철모. (2019). 빅 데이터를 활용한 스마트 관광 도시 사례 분석 연구: 제주특별자치도 관광객 데이터를 중심으로. 경영정보학연구, 21(2), 1-27.&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002472477&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002472477&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737524386728&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;빅 데이터를 활용한 스마트 관광 도시 사례 분석 연구: 제주특별자치도 관광객 데이터를 중심으&quot; data-og-description=&quot;정보기술의 발전으로 스마트한 관광서비스가 가능해졌는데, 관광산업이 기존 산업 범위를 벗어나 다른 산업과 융합을 통해 새로운 비즈니스 모델이 지속적으로 창출되기 위해서는 관광객들의 &quot; data-og-host=&quot;www.kci.go.kr&quot; data-og-source-url=&quot;https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002472477&quot; data-og-url=&quot;https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002472477&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002472477&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002472477&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;빅 데이터를 활용한 스마트 관광 도시 사례 분석 연구: 제주특별자치도 관광객 데이터를 중심으&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;정보기술의 발전으로 스마트한 관광서비스가 가능해졌는데, 관광산업이 기존 산업 범위를 벗어나 다른 산업과 융합을 통해 새로운 비즈니스 모델이 지속적으로 창출되기 위해서는 관광객들의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.kci.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;  요약&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;제주도 스마트 관광 활성화 방안을 제시하고자&amp;nbsp;제주도 관광객 데이터를 이용하여 최근 관광객의 소비지출 특성과 빠르게 변화하는 관광트렌드 분석&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 내국인과 중국인 관광객의 질적 성장을 위한 정책 방향 제시&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;- 분석 내용: 내국인과 중국인 관광객의 소비 분석(업종 및 주요 관광테마별 구분/단체와 개별 관광 유형 구분)&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;데이터 상세&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;내국인, 중국인 카드 데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;업종별 카드 이용 데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;주요 관광업종 인당 이용금액&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;주요 관광테마 건당, 인당 금액&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;단체 개별 관광객 소비데이터&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;업종별 건당, 인당 이용금액&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;제주 전체 업종별 건당, 인당 금액&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 제주도 지역별 소비 및 이동경로 분석을 통한 관광현황 파악&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;- 분석내용: 지역별 관광객의 소비 분석(주요 지역별 구분, 업종에 따른 구분, 시간대별 관광객 소비 현황)&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;데이터 상세&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;내국인, 중국인 카드 데이터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;업종별 카드 이용 데이터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;주요 관광업종 인당 이용금액&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;지리적 지역 구분 데이터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;카드 이용자 유형별 이용금액&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;업종별 카드 이용 데이터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;시간대별 카드 이용 데이터&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 주요 관광지 및 상권 소비현황 분석&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;- 분석내용: 주요 상업지구 단위 소비 분석(주요 관광지 및 상권 구분, 주요 상권별 소비 현황)&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;데이터 상세&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;관광지 및 상업지구 단위 구분 데이터&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;카드 이용자 유형별 이용금액&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;업종별 카드 이용 데이터&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;  데이터&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;신용카드: 2016년 9월 ~2017년 8월&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;nbsp;- 제주도민, 내국인 관광객(거주지가 제주도가 아님), 중국인 관광객으로 분류&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;nbsp;-업종: 교통, 문화레저, 쇼핑소매, 숙박, 식음료, 유흥&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;이동경로: 2016년 12월 2017년 12월&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;  주요 분석 결과&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;소비 패턴&lt;/b&gt;: 제주를 방문한 관광객의 소비 패턴은 중국인 관광객이 차지하는 비중이 크고, 특히 북부 지역의 면세점과 공항 등에서 소비가 집중된다. 중국인 관광객은 쇼핑 및 소매 분야에서 높은 소비를 보이며, 다른 지역에서 소비가 적다. 이를 해결하기 위해 중국인 관광객을 위한 인프라 개선과 다양한 프로모션이 필요하다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;관광객 유형별 소비 차이&lt;/b&gt;: 내국인과 중국인 관광객은 소비 분야가 다르다. 내국인은 유흥, 숙박, 소매에서 많은 소비를 보이고, 중국인은 쇼핑과 숙박에 집중한다. 특히 중국인 단체 관광객은 문화/레저 분야에서 큰 지출을 보인다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;스마트 관광 활성화&lt;/b&gt;: 제주도는 비콘 장치와 공공 와이파이를 통해 스마트 관광 환경을 구축하고 있으며, 이를 바탕으로 더욱 정교한 빅데이터 분석을 통해 관광객의 세부 이동경로를 파악하고, 다양한 서비스를 제공할 필요가 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;  시사점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;쇼핑관광 활성화&lt;/b&gt;: 제주도를 쇼핑 관광지로 자리매김하고, 중국인 관광객을 유치하기 위한 다양한 쇼핑 콘텐츠와 인프라 개선이 필요하다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;교통 인프라 개선&lt;/b&gt;: 제주도의 대중교통이 외국인 관광객에게 불편할 수 있어, 대중교통 인프라를 개선하고 외국어 표기 등을 강화해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;지역별 맞춤형 관광 상품 개발&lt;/b&gt;: 관광객 특성에 맞는 맞춤형 관광 상품과 정책을 개발하여, 지역별 특성에 맞는 소비 유도를 해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;  개인적으로 궁금한 점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;숙박의 경우 대부분 숙박 예약 어플리케이션(네이버, 야놀자, 여기어때, 아고다 등)을 활용하는 경우가 많을 텐데 이런 부분은 어떻게 처리했는지 궁금하다는 생각을 했다. 카드 결제에는 해당 숙박업체가 아니라 플랫폼명으로 뜰텐데 제주에서 숙박했는지 안했는지 어떻게 알았을까??&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/논문</category>
      <category>1일1논문</category>
      <category>논문</category>
      <category>논문읽기</category>
      <category>데이터분석논문</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/11</guid>
      <comments>https://minigameworld.tistory.com/11#entry11comment</comments>
      <pubDate>Wed, 22 Jan 2025 16:16:31 +0900</pubDate>
    </item>
    <item>
      <title>[스파크 완벽 가이드] 2장. 스파크 간단히 살펴보기(2)</title>
      <link>https://minigameworld.tistory.com/8</link>
      <description>&lt;p style=&quot;color: #222222; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;※ 혼자 책보고 공부하면서&amp;nbsp;적는거라 틀린 부분 있으면 댓글로 알려주세요!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.yes24.com/Product/Goods/67116641&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;YES24구매링크 - 별 의도는 없고 그냥 제가 예사에서 구매했어요...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1734395053189&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;스파크 완벽 가이드 - 예스24&quot; data-og-description=&quot;스파크 창시자가 알려주는 스파크 활용과 배포, 유지 보수의 모든 것 오픈소스 클러스터 컴퓨팅 프레임워크인 스파크의 창시자가 쓴 스파크에 대한 종합 안내서이다. 스파크 사용법부터 배포, &quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;https://www.yes24.com/Product/Goods/67116641&quot; data-og-url=&quot;https://www.yes24.com/Product/Goods/67116641&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cXSXzq/hyXOnhWdWl/6ffyI25ZXta7T3hbgIJML0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/xWpMK/hyXKt5dbco/Bl0fs1ZUprRpXXRH2VhtOk/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/r3UQC/hyXOlRXrFo/VkMUUpwRvu10XEuKnWu0G0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200&quot;&gt;&lt;a href=&quot;https://www.yes24.com/Product/Goods/67116641&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.yes24.com/Product/Goods/67116641&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cXSXzq/hyXOnhWdWl/6ffyI25ZXta7T3hbgIJML0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/xWpMK/hyXKt5dbco/Bl0fs1ZUprRpXXRH2VhtOk/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/r3UQC/hyXOlRXrFo/VkMUUpwRvu10XEuKnWu0G0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;스파크 완벽 가이드 - 예스24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;스파크 창시자가 알려주는 스파크 활용과 배포, 유지 보수의 모든 것 오픈소스 클러스터 컴퓨팅 프레임워크인 스파크의 창시자가 쓴 스파크에 대한 종합 안내서이다. 스파크 사용법부터 배포,&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;CHAP2. 스파크&amp;nbsp;간단히 살펴보기(2) - 종합예제&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://bit.ly/2yw2fCx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;데이터 다운로드는 여기서&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 스파크로 데이터 읽어오기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;spark.read&lt;/b&gt;: Spark의 DataFrameReader를 사용해 데이터를 읽을 준비&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;.option(&quot;inferSchema&quot;, &quot;true&quot;)&lt;/b&gt;: CSV 파일의 각 열에 대한 데이터 타입을 자동으로 추론하여 읽어옴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;.option(&quot;header&quot;, &quot;true&quot;)&lt;/b&gt;: 첫 번째 줄을 컬럼 이름으로 인식&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1734395752445&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flight_data_2015 = spark.read.option(&quot;inferSchema&quot;, &quot;true&quot;).
				   option(&quot;header&quot;, &quot;true&quot;).
                   csv(&quot;#파일경로&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvTXwt/btsLjR5pDgu/8pA6prb6lr9Y3a9LatVxBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvTXwt/btsLjR5pDgu/8pA6prb6lr9Y3a9LatVxBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvTXwt/btsLjR5pDgu/8pA6prb6lr9Y3a9LatVxBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvTXwt%2FbtsLjR5pDgu%2F8pA6prb6lr9Y3a9LatVxBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;955&quot; height=&quot;54&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;여기까지만 하면 당연히 아무일도 안일어나기 때문에 액션을 호출해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. take 액션 호출하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734395924095&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flight_data_2015.take(3)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfb6zt/btsLmkdss49/1lNAgKwFEgal4QiTKKu8KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfb6zt/btsLmkdss49/1lNAgKwFEgal4QiTKKu8KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfb6zt/btsLmkdss49/1lNAgKwFEgal4QiTKKu8KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfb6zt%2FbtsLmkdss49%2F1lNAgKwFEgal4QiTKKu8KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;102&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. explain 메서드를 호출하여 스파크의 실행계획 읽어보기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734396938575&quot; class=&quot;less&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;flight_data_2015.sort(&quot;count&quot;).explain()
#count 열을 기준으로 오름차순으로 정렬한 후, 그 실행 계획을 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cI2VSY/btsLkihcDCs/sB4j5yuzI7iQ1bVXVRvpwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cI2VSY/btsLkihcDCs/sB4j5yuzI7iQ1bVXVRvpwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cI2VSY/btsLkihcDCs/sB4j5yuzI7iQ1bVXVRvpwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI2VSY%2FbtsLkihcDCs%2FsB4j5yuzI7iQ1bVXVRvpwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;142&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-text-less=&quot;닫기&quot; data-text-more=&quot;더보기&quot; data-ke-type=&quot;moreLess&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;구체적인 실행계획을 챗GPT와 함께 뜯어봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;위에서 아래 방향으로 읽으며, 최종 결과는 가장 위, 데이터 소스는 가장 아래에 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;isFinalPlan=false:&amp;nbsp;&lt;/b&gt;현재 실행 계획이 최종이 아니라는 의미임. Spark가 실행 중에 이 계획을 조정할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;+-Sort[count#39 ASC NULLS FIRST], true, 0&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;sort: 데이터를 정렬하는 연산&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;count#39 : count라는 열의 39번째 컬럼으로, 컬럼 ID임&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ASC NULLS FIRST: 정렬 기준은 오름차순(ASC), Null값을 먼저 오도록 조정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;0: 정렬 버퍼 크기, 기본 정렬 방식 적용&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Exchange rangepartitioning(count#39 ASC NULLS FIRST, 200), ENSURE_REQUIREMENTS,[plan_id=99]&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Exchage: 데이터 교환&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;rangepartitioning(): count열을 기준으로 범위 파티셔닝을 하여 200개 파티션으로 나눔. 이때 count컬럼을 기준으로 정렬된 상태로 데이터가 나누어짐&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ENSURE_REQUIREMENTS: 필요한 파티션 수를 보장하기 위함&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;plan_id = 99 실행 계획의 고유 ID&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&lt;b&gt;+- FileScan csv [DEST_COUNTRY_NAME#37, ORIGIN_COUNTRY_NAME#38, count#39] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/D:/Spark_practice/2015-summary.csv], PartitionFilters: [], PushedFilters: [], ReadSchema: struct&amp;lt;DEST_COUNTRY_NAME:string,ORIGIN_COUNTRY_NAME:string,count:int&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;filescan csv: csv 파일을 읽어옴. []안의 열을 읽음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Batched: false는 배치 방식으로 읽지 않고, 각 레코드를 즉시 처리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Location~ : CSV파일의 경로를 나타냄, 파일이 메모리에 로드 된 상태임&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ReadSchema: 데이터를 읽을 때 사용할 스키마을 정의함. 여기서는 3개 컬럼이 정의되어 있는 걸 &amp;lt;&amp;gt;안에서 확인 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4. 트랜스포메이션 추가해보기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스파크는 셔플 실행 시 기본적으로 200개의 셔플 파티션이 생성됨. 값을 조정하여 파티션 수를 줄일 수 있음.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;spark.conf.set()&lt;/b&gt;: Spark의 설정 값을 변경해서 실행환경을 세팅할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&quot;spark.sql.shuffle.partitions&quot;&lt;/b&gt;: 셔플 시 파티션의 개수를 설정한다. 본 예제에선 5개의 파티션으로 나누어 처리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1734397490449&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;spark.conf.set(&quot;spark.sql.shuffle.partitions&quot;,&quot;5&quot;)
flight_data_2015.sort(&quot;count&quot;).take(2)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;파티션 값을 200으로도 변경해봤다. 런타임이 달라진다곤 하는데 데이터가 작아서 그런지 딱히 차이는 못느꼈다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oAQsV/btsLl7L28GK/aKe7m0FzkQCaYo4tfbOhpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oAQsV/btsLl7L28GK/aKe7m0FzkQCaYo4tfbOhpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oAQsV/btsLl7L28GK/aKe7m0FzkQCaYo4tfbOhpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoAQsV%2FbtsLl7L28GK%2FaKe7m0FzkQCaYo4tfbOhpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;959&quot; height=&quot;141&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DataFrame과 SQL을 사용하는 복잡한 작업&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스파크는 언어에 상관없이 같은 방식으로 트랜스포메이션을 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스파크 SQL을 사용하면 모든 Dataframe을 테이블이나 뷰로 등록 후 SQL쿼리를 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734398372959&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flight_data_2015.createOrReplaceTempView(&quot;flightData2015&quot;)
#createorreplacetempview를 호출하면 테이블/뷰로 만들 수 있음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;SQL과 Dataframe의 처리 방식이 어떻게 다른지 확인해봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 각 목적지 국가별로 개수 세기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;sql_way와 df_way가 실행계획이 완전히 똑같다. 개인적으로는 SQL쓴지 너무 오래되어서,, 데이터프레임 방식이 조금 더 편했던 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daWZGV/btsLlhuZKrf/kCucpKmhnfxLM7YzuKkgR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daWZGV/btsLlhuZKrf/kCucpKmhnfxLM7YzuKkgR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daWZGV/btsLlhuZKrf/kCucpKmhnfxLM7YzuKkgR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaWZGV%2FbtsLlhuZKrf%2FkCucpKmhnfxLM7YzuKkgR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1397&quot; height=&quot;517&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. 상위 5개의 도착 국가 찾아내기(max함수)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;max함수는 특정 컬럼값을 스캔하면서 이전 최댓값보다 더 큰 값을 찾아내는 트랜스포메이션이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;요건 SQL방식. SQL이 익숙하면 이 방식이 편한 것 같다. 문제는 SQL한지가... 반년 넘어서 다 희미하게 남아있다는 것.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FVZF0/btsLkt31A8G/JzpbhOvZg237Xymz5vKsBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FVZF0/btsLkt31A8G/JzpbhOvZg237Xymz5vKsBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FVZF0/btsLkt31A8G/JzpbhOvZg237Xymz5vKsBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFVZF0%2FbtsLkt31A8G%2FJzpbhOvZg237Xymz5vKsBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;326&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;그래서 데이터프레임 구문으로 똑같은 걸 해봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wf0bH/btsLlrjW4Fz/kGdCKnDflZxR6zbEZ3KsF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wf0bH/btsLlrjW4Fz/kGdCKnDflZxR6zbEZ3KsF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wf0bH/btsLlrjW4Fz/kGdCKnDflZxR6zbEZ3KsF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWf0bH%2FbtsLlrjW4Fz%2FkGdCKnDflZxR6zbEZ3KsF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;288&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이렇게 써놓고 보니까 SQL이 더 나은 것 같기도 하고.. 편한 걸로 선택하면 되지 않을까 싶다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;+ 캡쳐를 못했는데&amp;nbsp; explain()으로 확인한 실행계획과 내가 쓴 코드 간의 차이가 좀 나는 것 같다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;아무튼 이렇게 아파치 스파크 기초 정리가 끝났다. 매번 말로만 스파크 스파크 했지 실제로 요렇게 해 보는 건 처음인데, 생각보다 괜찮았던 것 같다. 그리고 cmd로 하니까 눈아프다,, 조만간 vscode에 spark설치해서 거기서 연습해봐야겠다..&lt;/b&gt;&lt;/p&gt;</description>
      <category>데이터분석가로 살아남기/빅데이터</category>
      <category>spark</category>
      <category>빅데이터분석</category>
      <category>스파크</category>
      <category>스파크sql</category>
      <category>스파크데이터프레임</category>
      <category>스파크실행계획</category>
      <category>스파크트렌스포메이션</category>
      <category>스파크파티션</category>
      <category>아파치스파크</category>
      <author>별수호자룰루</author>
      <guid isPermaLink="true">https://minigameworld.tistory.com/8</guid>
      <comments>https://minigameworld.tistory.com/8#entry8comment</comments>
      <pubDate>Tue, 17 Dec 2024 19:43:20 +0900</pubDate>
    </item>
  </channel>
</rss>