정보
-
업무명 : R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화
-
작성자 : 이상호
-
작성일 : 2020-02-21
-
설 명 :
-
수정이력 :
내용
[특징]
-
네이버 지식iN에서 R 프로그래밍 관련 답변을 위해서 체계적인 소스 코드 현행화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
-
추가로 2020년 03월 30일 및 04월 30일 현행화 버전을 보내드리오니 참고하시기 바랍니다.
[기능]
-
R 프로그램 관련 "질문&답변 (Q&A)" 소개
-
"#"를 기준으로 질문에 대한 답변 및 "소스 코드" 첨부
[활용 자료]
-
질문자가 제공하신 입력 자료 (.sav, .xlsx, .txt, .csv)
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
소스 코드 참조
[사용 OS]
-
Window 10
[사용 언어]
-
R v3.6.2
-
R Studio v1.2.5033
소스 코드
[네이버 지식iN]
-
"질문&답변 (Q&A)" 소개
[전체]
-
"#"을 기준으로 질문에 대한 답변 및 "소스 코드" 첨부
-
2020년 02월 21일 업로드
#===============================================================================================
# Routine : Main R program
#
# Purpose : NAVER 지식iN
#
# Author : MS. Sang-Ho Lee
#
# Revisions: V1.0 February 21, 2020 First release (MS. Sang-Ho Lee)
#===============================================================================================
# Set Option
options(digits = 10)
memory.limit(size = 9999999999999)
#
xAxis = seq(0, 10)
yAxis = seq(0, 10)
yAxis2 = seq(0, 10) + 2
yAxis3 = seq(0, 10) + 4
yAxis4 = seq(0, 10) + 6
yAxis5 = seq(0, 10) + 8
plot(xAxis, yAxis, xlim = c(0, 10), ylim=c(0, 20))
points(xAxis, yAxis2, col = "red")
points(xAxis, yAxis3, col = "blue")
points(xAxis, yAxis4, col = "green")
points(xAxis, yAxis5, col = "orange")
#
A = matrix(1:20, 5, 4)
#
# 라이브러리 읽기
library(tidyverse)
mpg %>%
dplyr::filter(year == 2008) %>%
dplyr::summarise(number = n())
mpg %>%
dplyr::filter(class == "compact") %>%
dplyr::group_by(manufacturer) %>%
dplyr::summarise(number = n()) %>%
dplyr::arrange(desc(number))
#
# 라이브러리 읽기
library(tidyverse)
st = data.frame(state.x77)
colnames(st) = c("popul", "income", "illit", "lifeExp", "murder", "hsGrad", "frost", "area")
# 문제1에 대한 답변
st %>%
tibble::rownames_to_column() %>%
dplyr::mutate(maxLifeExp = max(lifeExp, na.rm = T)) %>%
dplyr::filter(lifeExp == maxLifeExp)
mt = data.frame(mtcars)
# 문제 2에 대한 답변
mt %>%
tibble::rownames_to_column() %>%
dplyr::mutate(maxMpg = max(mpg, na.rm = T)) %>%
dplyr::filter(mpg == maxMpg)
# 문제 3에 대한 답변
mt %>%
tibble::rownames_to_column() %>%
dplyr::filter(gear == 4) %>%
dplyr::mutate(minMpg = min(mpg, na.rm = T)) %>%
dplyr::filter(mpg == minMpg)
air = data.frame(airquality)
# 문제 4에 대한 답변
air %>%
dplyr::mutate(maxTemp = max(Temp, na.rm = T)) %>%
dplyr::filter(Temp == maxTemp) %>%
dplyr::select(Month, Day)
# 문제 5에 대한 답변
air %>%
dplyr::group_by(Month) %>%
dplyr::summarise(maxWind = max(Wind, na.rm = T)) %>%
dplyr::filter(Month == 6)
# 문제 6에 대한 답변
air %>%
dplyr::group_by(Month) %>%
dplyr::summarise(meanOzone = mean(Ozone, na.rm = T)) %>%
dplyr::filter(Month == 5)
# 문제 7에 대한 답변
air %>%
dplyr::filter(Ozone > 100) %>%
dplyr::summarise(number = n())
sw = data.frame(swiss)
# 문제 8에 대한 답변
sw %>%
tibble::rownames_to_column() %>%
dplyr::mutate(maxAgri = max(Agriculture, na.rm = T)) %>%
dplyr::filter(Agriculture == maxAgri)
# 문제 9에 대한 답변
sw %>%
tibble::rownames_to_column() %>%
dplyr::arrange(desc(Agriculture ))
# 문제 10에 대한 답변
sw %>%
tibble::rownames_to_column() %>%
dplyr::filter(Catholic >= 80) %>%
dplyr::summarise(meanAgri = mean(Agriculture, na.rm = T))
# 문제 11에 대한 답변
sw %>%
tibble::rownames_to_column() %>%
dplyr::filter(Examination < 20 && Agriculture < 50) %>%
dplyr::select(rowname, Agriculture, Examination)
nNrorm = rnorm(n = 100, mean = 0, sd = 1)
hist(nNrorm)
nNrorm = rnorm(n = 100, mean = 0, sd = 10)
hist(nNrorm)
#
class(a)
class(st)
st[[1,3]]
x = c(9, 0, 6, 7, 2)
x = c(10, 1, 10, 1, 10)
x = c(10, 10, 10, 10, 10)
v1 = 10:100
v1.a = v1[25:30]
length(v1.a)
mean(v1.a, na.rm = T)
x = c(1:10)
boxplot(x)
abline(h = boxplot.stats(x, 0.75)$conf[2], col = "red")
# 1번 답변
x = c(9, 0, 6, 7, 2)
which((x %% 2) == 1)
# 2번 답변
xRef = c(10, 10, 10, 10)
x = c(1, 10, 1, 10)
setequal(x, xRef)
x = c(10, 10, 10, 10)
setequal(x, xRef)
#
a = list("이상혁", "클리드", "칸")
b = list("에포트", "테디", "이상혁")
result = append(a, b)
# 패키지 설치
install.packages("measurements")
# 패키지 읽기
library(measurements)
# 1 파운드를 1 kg으로 환산
conv_unit(1, "lbs", "kg")
#
library(xtable)
library(magrittr)
library(moonBook)
library(snakecase)
options(xtable.floating="FALSE")
options(xtable.time="FALSE")
options(ztable.type="html")
options(ztable.type="html")
a = mytable(head(iris))
print(xtable(a), type="html")
str_cars = capture.output(str(iris))
xtable(data.frame(str_cars))
a = diag(3)
a[1,2] = 2
data <- c(25,-2,4,-2,4,1,4,1,9)
Sigma <- matrix( data = data, nrow = 3, ncol = 3, byrow = FALSE)
t(Sigma) %*% Sigma
cov(data)
b = diag(3)
Sigma %*% b
a[]
diag (X) <- 1
# 행렬 X의 대각 성분을 모두 1로한다.
diag(X) = 1
diag (X) <- c (1, 2)
#
library(dplyr)
library(ggplot2)
airquality %>%
ggplot(aes(x = Month, y = Temp)) +
geom_boxplot()
#
# 연도
year = seq(2010, 2015)
# 자살 건수
value = c(30, 40, 50, 60, 65, 70)
# 그래프 결과
plot(year, value)
#
# 패키지 설치
install.packages("gtools")
# 패키지 읽기
library(gtools)
nEven = even(1:100)
which(nEven)
install.packages("dplyr")
library(ggiraphExtra)
library(maps)
library(mapproj)
library(ggplot2)
library(tibble)
crime = rownames_to_column(USArrests, var = "state")
crime$state = tolower(crime$state)
states_map = map_data("state")
crime %>%
ggChoropleth(aes(fill = Murder, map_id = state), map = states_map)
#
# 변수 초기화 및 설정
d1 = c(8, 8, 9, 10, 10)
d2 = c(10, 5, 3, 12, 21)
# 함수 정의
sum1 = function(d1, d2) {
result = d1 + d2
return (result)
}
sum2 = function(d1) {
result = sum(d1)
return (result)
}
sum1(d1,d2)
sum2(d1)
#
value = c(1:100)
hist(value)
data = c(2,3,16,23,14,12,4,1,2,0,0,0,6,28,31,14,4,8,2,5)
stem(data, scale = 2)
data = c(71, 84, 68, 75, 91, 87, 63, 77, 81, 98, 57, 73, 74, 85, 50,
62, 66, 78, 65, 59, 75, 89, 94, 93, 86, 61, 87, 74, 70, 67)
table(cut(data, 6))
hist(data, breaks = seq(50, 98, 8), freq = F)
lines(density(data), col = "red")
library(dplyr)
midwest %>%
dplyr::mutate(ratio_child = popadults/poptotal * 100)
getValue = c("경기도", "경기")
setValue = replace(getValue, 1, c("경기"))
x = seq(-3, 3, 0.1)
y = dnorm(x, 0, 1)
plot(x, y, type = 'l', ylim=c(0, max(y)), ylab = "", main = "Probability Density Function")
x = seq(-pi, pi, 0.01)
plot(x, sin(x), col = "black", type = "l", ylab = "sin (x), cos (x), tan (x)", ylim = c(-1, 1))
lines(x, cos(x), col = "red")
lines(x, tan(x), col = "blue")
x = seq(-1, 1, length.out = 100)
y = x^2
plot(x, x, pch = "*", ylab = expression("x"^2))
lines(x, y, col = "red")
library(lubridate)
interval(
start = ymd("2018-1-16"),
end = ymd("2018-1-31")
)
dtStartDate = lubridate::ymd("2017/1/1")
dtEndDate = lubridate::ymd("2018/1/1")
dtDayDiff = lubridate::interval(dtStartDate, dtEndDate)
dtDayDiff/days(1)
iValue = c(1:10)
class(iValue)
nValue = as.numeric(iValue)
class(nValue)
paris(iris[1:4], main="Title", pch=20, bg=c("red","green3","blue")
[unclass(iris$Species)])
unclass(iris$Species)
library(ggplot2)
library(dplyr)
cars %>%
ggplot(aes(x = speed, y = dist)) +
geom_point() +
scale_x_continuous(breaks=c(5, 6, 7, 9, 10, 15, 20, 25)) +
scale_y_continuous(breaks=c(0, 50, 65, 75, 150))
# install.packages("primes")
library(primes)
?is_prime
generate_primes(min = 0, max = 100)
aa =
function (x)
{
is_prime_vector(x)
}
is_prime(0:100)
Is_Prime_Number = function(n) {
if (n >= 2) {
x = seq(2, n)
prime_nums = c()
for (i in seq(2, n)) {
if (any(x == i)) {
prime_nums = c(prime_nums, i)
x = c(x[(x %% i) != 0], i)
}
}
return(prime_nums)
} else {
stop("Input number should be at least 2.")
}
}
Is_Prime_Number(100)
nValue = seq(1, 10, 0.1)
sample(nValue, 10)
library(ggplot2)
library(dplyr)
diamonds %>%
dplyr::filter(price >= 10000) %>%
dplyr::sample_n(10)
install.packages("arules")
library(arules)
load("product_by_user.RData")
trans = as(product_by_user $Product, "transactions")
trans
orders <- data.frame(
transactionID = sample(1:500, 1000, replace=T),
item = paste("item", sample(1:50, 1000, replace=T),sep = "")
)
iYear = seq(1993, 2001)
nPersonal = c(13.6, 13.7, 12.5, 11.9, 11.7, 11.5, 11.7, 13.3, 14.2)
nGroup = c(17.6, 18.4, 19.4, 18.8, 20.0, 20.3, 26.9, 21.5, 26.0)
maxY = max(nPersonal, nGroup)
minY = min(nPersonal, nGroup)
plot(iYear, nPersonal, ylim = c(minY, maxY), col = "black", type = "l", xlab = "연도", ylab = "가입자 수 [단위 : 100만]")
points(iYear, nGroup, col = "blue", type = "l")
install.packages("quadprog")
library(quadprog)
# optimal portfolio for investing in 3 stocks# beta_i : ratio of investment, nonnegative and sum to 1
# x: daily return for stocks: 0.002, 0.005, 0.01
# D: variability in the returns (covariance)
A = cbind(rep(1,3), diag(rep(1,3)))
D = matrix(c(.01,.002,.002,.002,.01,.002,.002,.002,.01), nrow=3)
x = c(.002,.005,.01)
b = c(1,0,0,0)
solve.QP(2*D, x, A, b, meq=1)# optimal strategy: invest 10.4%, 29.2%, 60.4% for stocks 1,2,3# optimal value is 0.002
x = 156
y = 1178
x2 = 1262
y2 = 69390
xy = 9203
r = (xy - ((x * y)/20)) / ((x2-((x^2)/20))*(y2-((y^2)/20)))
r
install.packages("rlang")
library(rlang)
library(dplyr)
bmi = function(height, weight) {
round(weight / (height / 100)^2, digits = 2)
}
data = data.frame(
height = c(179, 161, 165, 185, 158)
, weight = c(75, 72, 60, 98, 65)
)
data
data %>%
dplyr::mutate(bmi = bmi(height, weight)
, result = case_when(
bmi > 25 ~ "비만"
, TRUE ~ "정상"
)
)
library(plyr)
iData = sample(1:6, 7, replace = TRUE)
iData
fData = factor(iData)
fData
rsData = plyr::mapvalues(fData, from = c(1:6), to = c("one", "two", "three", "four", "five", "six"))
rsData
table(rsData)
library(tidyverse)
library(readxl)
library(scales)
blank_theme = theme_minimal()+
theme(
axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.border = element_blank(),
panel.grid=element_blank(),
axis.ticks = element_blank(),
plot.title=element_text(size=14, face="bold")
)
df_life = read_excel("INPUT/sample_data.xlsx", sheet = "생활상태")
dplyr::glimpse(df_life)
dplyr::tbl_df(df_life)
# 성별에 대한 빈도
dfData = df_life %>%
dplyr::group_by(Gender) %>%
dplyr::summarise(nNumber = n()) %>%
dplyr::mutate(type = case_when(
Gender == 1 ~ "남자"
, Gender == 2 ~ "여자"
, TRUE ~ "null"
))
ggplot(data = dfData, aes(x = "", y = nNumber, fill = type)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y", start = 0) +
blank_theme +
theme(axis.text.x=element_blank()) +
geom_text(aes(y = nNumber/2.0 + c(0, cumsum(nNumber)[-length(nNumber)]),
label = percent(nNumber/100)), size = 5)
# 연령에 대한 빈도
df_life %>%
dplyr::group_by(Age) %>%
dplyr::summarise(nNumber = n()) %>%
dplyr::mutate(type = case_when(
Age == 1 ~ "1-40세 이하"
, Age == 2 ~ "41-64세"
, Age == 3 ~ "65세 이상"
, TRUE ~ "null"
)) %>%
ggplot(aes(x = "", y = nNumber, fill = type)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y", start = 0) +
blank_theme +
theme(axis.text.x=element_blank()) +
geom_text(aes(y = nNumber/3 + c(0, cumsum(nNumber)[-length(nNumber)]),
label = percent(nNumber/100)), size = 5)
# 학력에 대한 빈도
df_life %>%
dplyr::group_by(Study) %>%
dplyr::summarise(nNumber = n()) %>%
dplyr::mutate(type = case_when(
Study == 1 ~ "고졸이하"
, Study == 2 ~ "전문대졸"
, Study == 3 ~ "대졸"
, Study == 4 ~ "대학원졸"
, TRUE ~ "null"
)) %>%
ggplot(aes(x = "", y = nNumber, fill = type)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y", start = 0) +
blank_theme +
theme(axis.text.x=element_blank()) +
geom_text(aes(y = nNumber/4 + c(0, cumsum(nNumber)[-length(nNumber)]),
label = percent(nNumber/100)), size = 5)
# 월 소득에 대한 빈도
df_life %>%
dplyr::group_by(Income) %>%
dplyr::summarise(nNumber = n()) %>%
dplyr::mutate(type = case_when(
Income == 1 ~ "1-200 만원 이하"
, Income == 2 ~ "200-300 만원"
, Income == 3 ~ "300-500 만원"
, Income == 4 ~ "500 만원 이상"
, TRUE ~ "null"
)) %>%
ggplot(aes(x = "", y = nNumber, fill = type)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y", start = 0) +
blank_theme +
theme(axis.text.x=element_blank()) +
geom_text(aes(y = nNumber/4 + c(0, cumsum(nNumber)[-length(nNumber)]),
label = percent(nNumber/100)), size = 5)
# 가정생활, 직업생활, 문화생활 만족도에 대한 평균과 표준편차
df_life %>%
dplyr::summarise(meanHome = mean(Home_life, na.rm = T)
, meanJob = mean(Job_life, na.rm = T)
, meanCulture = mean(Culture_life, na.rm = T)
, sdHome = sd(Home_life, na.rm = T)
, sdJob = sd(Job_life, na.rm = T)
, sdCulture = sd(Culture_life, na.rm = T)
)
# Boxplot 그리기
df_life %>%
tidyr::gather(-c(1:5), key = "key", value = "value") %>%
ggplot(aes(x = key, y = value, fill = key)) +
geom_boxplot(alpha=0.7) +
scale_x_discrete(name = "Type") +
theme_bw() +
theme(plot.title = element_text(size = 14, family = "Tahoma", face = "bold"),
text = element_text(size = 12, family = "Tahoma"),
axis.title = element_text(face="bold"),
axis.text.x=element_text(size = 11),
legend.position = "bottom") +
scale_fill_brewer(palette = "Accent") +
labs(fill = "Type")
# 가정생활, 직업생활, 문화생활 만족도의 평균값을 전반적인 만족도 추가
df_life2 = df_life %>%
dplyr::mutate(meanHome = mean(Home_life, na.rm = T)
, meanJob = mean(Job_life, na.rm = T)
, meanCulture = mean(Culture_life, na.rm = T)
)
df_life2
Sys.which("R")
options(error)
options(show.error.messages = TRUE)
options(showErrorCalls = TRUE)
library(pracma)
library(numbers)
# 최대공약수
pracma::gcd(1, 24)
# 최소공배수
pracma::Lcm(12, 24)
# 3의 배수
seq(1, 100, 2)
library(numbers)
# 1번 답 (1)
iNumber = 0
iSum = 0
for (iCount in 1:100) {
if (iCount %% 3 == 0) {
iNumber = iNumber + 1
iSum = iSum + iCount
}
}
cat(iNumber, " ", iSum)
# 1번 답 (2)
nData = which(seq(1, 100, 1) %% 3 == 0)
cat(length(nData), " ", sum(nData, na.rm = T))
# 2번 답
for (iCount in 101:200) {
if ((iCount %% 3 == 0) && (iCount %% 4 == 0)) {
cat(iCount, "\n")
}
}
# 3번 답
numbers::divisors(24)
# 4번 답
iSum = 1
for (iCount in 1:10) {
iSum = iSum * iCount
}
cat(iSum)
# 5번 답
for (iCount in 1:100) {
if (iCount %% 3 == 0) {
rsResult = "*"
} else {
rsResult = iCount
}
cat(rsResult, "\n")
}
x <- rnorm(20,0,1)
y <- rnorm(25,1,4)
t_test <- function(x,y,delta0,alter) {
delta0 = 0
alter = 1
meanx <- mean(x)
meany <- mean(y)
n1 <- length(x)
n2 <- length(y)
sdx <- sd(x)
sdy <- sd(y)
sp <- sqrt(((n1-1)*(sdx^2) + (n2-1)*(sdy^2)) / (n1+n2-2))
if (sdy/sdx > 1/2 | sdy/sdx < 2) {
t <- ((meanx-meany)-delta0) / (sp*sqrt(1/n1+1/n2))
df <- n1+n2-2
} else {
t <- ((meanx-meany)-delta0) / (sqrt((sdx^2)/n1+(sdy^2)/n2))
df <- min(n1-1,n2-1)
}
if (alter==1) {
p <- pt(t,df,lower.tail=F)
} else if (alter==2) {
p <- pt(t,df,lower.tail=T)
} else {
p <- 2*pt(abs(t),df,lower.tail=F)
}
data <- c(meanx,meany,sdx,sdy,t,NA,df,NA,p,NA)
table <- matrix(data,ncol=5,nrow=2)
colnames(table) <- c("m","s.d","t","df","p")
rownames(table) <- c("A","B")
print(table, na.print = "")
}
t_test(x,y,0,1)
t_test(x,y,0,2)
t_test(x,y,0,3)
install.packages("asbio")
library(asbio)
Y1 = rnorm(100, 15, 2)
Y2 = rnorm(100, 18, 3.2)
chi.plot(Y1, Y2)
install.packages("mvoutlier")
library(mvoutlier)
data(humus)
res = chisq.plot(log(humus[,c("Co","Cu","Ni")]))
res$outliers # these are the potential outliers
class <- c(rep(1,40),rep(1,43),rep(1,67),rep(1,50))
class <- c(40,43,67,50)
data = data.frame(
)
library(dplyr)
library(ggplot2)
data = dplyr::tibble(
key = c(1, 2, 3, 4)
, value = c(40, 43, 67, 50)
, name = c("1학년", "2학년", "3학년", "4학년")
)
plot(data$key, data$value)
data %>%
ggplot2::ggplot(aes(x = key, y = value, colour = name)) +
ggplot2::geom_point()
data$value
liData = list(
rep(1, 40)
, rep(1, 43)
, rep(1, 67)
, rep(1, 50)
)
class = c()
for (iCount in 1:length(liData)) {
iNumber = length(liData[[iCount]])
class = c(class, iNumber)
cat(iNumber, "\n")
}
class
library(tidyverse)
library(gapminder)
# 1번 답
CarData = data.frame(mtcars)
CarData %>%
ggplot(aes(x = disp, y = mpg)) +
geom_point() +
geom_smooth(method = "lm")
CarData %>%
arrange(hp, desc(cyl))
# 2번 답
CData = data.frame(gapminder)
CData %>%
dplyr::filter(continent == "Asia") %>%
dplyr::filter(year == 2007) %>%
dplyr::mutate(maxLifeExp = max(lifeExp, na.rm = T)) %>%
dplyr::filter(lifeExp == maxLifeExp)
CData %>%
dplyr::filter(continent == "Europe") %>%
dplyr::filter(year == 2007) %>%
dplyr::mutate(maxLifeExp = max(lifeExp, na.rm = T)) %>%
dplyr::filter(lifeExp == maxLifeExp)
CData %>%
dplyr::filter(year == 1997) %>%
dplyr::mutate(maxLifeExp = max(lifeExp, na.rm = T)) %>%
dplyr::filter(lifeExp == maxLifeExp)
CData %>%
dplyr::filter(continent == "Asia") %>%
dplyr::filter(year == 1992) %>%
dplyr::summarise(meanLifeExp = mean(lifeExp, na.rm = T))
CData %>%
dplyr::filter(year == 2007) %>%
ggplot(aes(x = gdpPercap, y = lifeExp)) +
geom_point() +
geom_smooth(method = "lm")
dataL1 = CData %>%
dplyr::filter(year == 2007)
lmFit = lm(dataL1$lifeExp ~ dataL1$gdpPercap)
lmFit
#
library(tidyverse)
data = read.csv("INPUT/출산율.csv")
# dplyr::glimpse(data)
# 연도별 평균 출산율
data %>%
dplyr::group_by(연도) %>%
dplyr::summarise(nMeanBirthRate = mean(출산율, na.rm = TRUE))
# 지역별 평균 출산율
dataL1 = data %>%
dplyr::group_by(지역) %>%
dplyr::summarise(nMeanBirthRate = mean(출산율, na.rm = TRUE))
dataL1
# 지역별 평균 출산율에서 출산율 최대/최소 지역
dataL1 %>%
dplyr::filter(nMeanBirthRate == max(nMeanBirthRate, na.rm = TRUE)
| nMeanBirthRate == min(nMeanBirthRate, na.rm = TRUE))
#
library(tidyverse)
data = read.csv("INPUT/진료비.csv")
# 성별에 따른 평균 진료비
data %>%
dplyr::group_by(성별) %>%
dplyr::summarise(nMeanCost = mean(진료비, na.rm = TRUE))
# 지역구에 따른 평균 내원환자수
data %>%
dplyr::group_by(지역구) %>%
dplyr::summarise(nMeanPatient = mean(내원환자수, na.rm = TRUE))
#
library(tidyverse)
library(readxl)
data = read_excel("INPUT/satis.xlsx")
# 성별에 대한 빈도
dataL1 = data %>%
dplyr::mutate(
sGender = case_when(
x1 == 1 ~ "남성"
, x1 == 2 ~ "여성"
, TRUE ~ "null"
)
, sUniv = case_when(
x2 == 1 ~ "S대"
, x2 == 2 ~ "Y대"
, x2 == 3 ~ "K대"
, x2 == 4 ~ "A대"
, x2 == 5 ~ "B대"
, x2 == 6 ~ "H대"
, x2 == 7 ~ "M대"
, TRUE ~ "null"
)
, sGrade = case_when(
x3 == 1 ~ "1학년"
, x3 == 2 ~ "2학년"
, x3 == 3 ~ "3학년"
, x3 == 4 ~ "4학년"
, TRUE ~ "null"
)
, sPeriod = case_when(
x4 == 1 ~ "5년 미만"
, x4 == 2 ~ "5~10년"
, x4 == 3 ~ "10~15년"
, x4 == 4 ~ "15~20년"
, x4 == 5 ~ "20년 이상"
, TRUE ~ "null"
)
, sLifeStyle = case_when(
x5 == 1 ~ "통합"
, x5 == 2 ~ "하숙 및 자취"
, x5 == 3 ~ "학교 기숙사"
, x5 == 4 ~ "기타"
, TRUE ~ "null"
)
, sSatType = case_when(
x6 == 1 ~ "전혀 만족하지 않는다"
, x6 == 2 ~ "만족하지 않는다"
, x6 == 3 ~ "보통이다"
, x6 == 4 ~ "만족한다"
, x6 == 5 ~ "매우 만족한다"
, TRUE ~ "null"
)
)
dplyr::glimpse(dataL1)
# 성별에 따른 대학생활의 전반적 만족도의 차이를 검증하시오.
dataL1 %>%
dplyr::group_by(sGender) %>%
dplyr::summarise(nSatType = mean(x6, na.rm = TRUE))
# 소속대학별 대학생활의 전반적 만족도의 차이를 검증하시오.
dataL1 %>%
dplyr::group_by(sUniv) %>%
dplyr::summarise(nSatType = mean(x6, na.rm = TRUE))
# 학년별 대학생활의 전반적 만족도의 차이를 검증하시오.
dataL1 %>%
dplyr::group_by(sGrade) %>%
dplyr::summarise(nSatType = mean(x6, na.rm = TRUE))
# 대학생활의 만족 정도에 대한 각각의 상관관계를 구하고
# 각 변수간에서 상관관계(0.4이상)가 있는 변수를 구하시오
dataL1 %>%
dplyr::select(x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) %>%
cor %>%
as.data.frame() %>%
tibble::rownames_to_column() %>%
dplyr::mutate(
sRowName = case_when(
rowname == "x6" ~ "대학생활의 전반적 만족 정도"
, rowname == "x7" ~ "지역문화의 만족도"
, rowname == "x8" ~ "통학수단의 만족도"
, rowname == "x9" ~ "시내 교통의 만족도"
, rowname == "x10" ~ "소속대학의 만족도"
, rowname == "x11" ~ "전공의 만족도"
, rowname == "x12" ~ "물가의 만족도"
, rowname == "x13" ~ "전세(월세)등의 만족도"
, rowname == "x14" ~ "치안의 만족도"
, rowname == "x15" ~ "먹을거리, 음식 만족도"
, TRUE ~ "null"
)
) %>%
dplyr::select(sRowName, x6) %>%
dplyr::filter(x6 >= 0.4)
#
library(alr3)
lmFit = lm(Fertility ~ ., data = swiss)
# 분산팽창지수
vif(lmFit)
# 공차한계
1.0/vif(lmFit)
#
VX = 83416.66666667
# 소수점 2자리까지 표시
round(VX, 2)
nValue = c(20160809103050)
nValue
# 숫자로 표시
format(nValue, scientific = FALSE)
# RData 저장
save(mtcars, file = "mtcars.RData")
# RData 읽기
load("mtcars.RData")
# RData를 csv로 변환
write.csv(mtcars, file = "mtcars.csv")
#
# 현재 작업 디렉터리 읽기
getwd()
# 현재 작업 디렉터리 셋팅
setwd(getwd())
# 파일 읽기 (현재 작업 디렉터리 하위에 위치)
df = read.csv(paste0(getwd(), "/", "파일이름"), header = TRUE)
#
library (haven)
haven01 <- read_sav("6areaeng.sav")
saveRDS(dataL1, file = "my_data.rds")
#====================================================================
# 내 PC
#====================================================================
dfDataA = data.frame(
stretch = c(46, 54, 48, 50, 44, 42, 52)
, distance = c(183, 217, 189, 208, 178, 150, 249)
)
dfDataB = data.frame(
stretch = c(25, 45, 35, 40, 55, 60)
, distance = c(71, 196, 127, 187, 249, 291)
)
minStretch = min(dfDataA$stretch, dfDataB$stretch)
maxStretch = max(dfDataA$stretch, dfDataB$stretch)
minDistance = min(dfDataA$distance, dfDataB$distance)
maxDistance = max(dfDataA$distance, dfDataB$distance)
plot(dfDataA$stretch, dfDataA$distance, xlab = "stretch", ylab = "distance", pch = "a", xlim = c(minStretch, maxStretch), ylim = c(minDistance, maxDistance))
points(dfDataB$stretch, dfDataB$distance, pch = "b")
var1 <- c(1:5)
var2 <- c(1,2,3)
var3 <- c("문자","숫자")
var4 <- c("1","5")
library(GISTools)
data(georgia)
#
# auto.shading
#
# Compute a rate for mapping and put it in a variable - re-scale to avoid
# a profusion of zeros
incomes <- georgia$MedInc/1000
# Create a shading scheme
shades <- auto.shading(incomes, n = 6, cutter = rangeCuts, cols = brewer.pal(6, "Greens"))
# Draw a map based on this scheme
choropleth(georgia, incomes, shades)
# Add a legend based on this scheme
choro.legend(-82, 34.87, shades, fmt = "%4.1f", title = "Median Income (1000$'s)")
# Add a title to the map
title("Median Income in Georgia (1990)")
# ... and a little more explanatory text
text(-85.3, 30.4, "Source: US Census")
# ... and a north-point arrow
north.arrow(-80.9, 30.4, 0.1)
# and draw a box around it
box(which = "outer")
library(dplyr)
library(tibble)
st = data.frame(state.x77)
# 11번 답변
st %>%
tibble::rownames_to_column() %>%
dplyr::filter(rowname == "Texas") %>%
dplyr::select(rowname, Area)
# 12번 답변
st %>%
tibble::rownames_to_column() %>%
dplyr::filter(rowname == "Ohio") %>%
dplyr::select(rowname, Population, Income)
# 13번 답변
st %>%
tibble::rownames_to_column() %>%
dplyr::filter(Population >= 5000) %>%
dplyr::select(rowname)
# 14번 답변
st %>%
tibble::rownames_to_column() %>%
dplyr::filter(Income >= 4500) %>%
dplyr::select(rowname, Population, Income, Area)
# 15번 답변
st %>%
tibble::rownames_to_column() %>%
dplyr::filter(Income >= 4500) %>%
dplyr::summarise(count = n())
library(ggplot2)
library(dplyr)
carData = data.frame(mtcars)
carData %>%
ggplot(aes(x = disp, y = mpg)) +
geom_point()
carData %>%
arrange(desc(hp), desc(cyl))
data = data.frame(
x = c(1360, 1940, 1750, 1550, 1790, 1750, 2230, 1600, 1450, 1870, 2210, 1480)
, y = c(278.5, 375.7, 339.5, 329.8, 295.6, 310.3, 460.5, 305.2, 288.6, 365.7, 425.3, 268.5)
)
xAxis = data$x
yAxis = data$y
# 상관계수
sumX = sum(xAxis, na.rm = T)
sumY = sum(yAxis, na.rm = T)
sumXY = sum(xAxis * yAxis, na.rm = T)
sumX2 = sum(xAxis^2, na.rm = T)
sumY2 = sum(yAxis^2, na.rm = T)
iNumber = length(xAxis)
step1 = (iNumber * sumXY) - (sumX * sumY)
step2 = (iNumber * sumX2) - (sumX * sumX)
step3 = (iNumber * sumY2) - (sumY * sumY)
step4 = sqrt(step2 * step3)
rsCor = step1 / step4
rsCor
# 공분산
meanX = mean(xAxis, na.rm = T)
meanY = mean(yAxis, na.rm = T)
anomalyX = xAxis - meanX
anomalyY = yAxis - meanY
rsCov = sum(anomalyX * anomalyY, na.rm = T) / (iNumber - 1)
rsCov
data = data.frame(
id = seq(1, 20, 1)
, age = c("10대", "10대", "20대", "20대", "10대", "20대", "20대", "30대", "30대", "10대"
, "10대", "20대", "10대", "20대", "30대", "30대", "20대", "20대", "30대", "10대")
, drink = c("A", "D", "D", "C", "D", "B", "B", "B", "C", "A"
, "D", "D", "C", "D", "B", "A", "C", "C", "A", "B")
)
data
table(data$age)
table(data$age, data$drink)
# 현재 작업환경 경로 확인
getwd()
# 현재 작업환경 경로 설정
setwd("/Users/^^/Desktop")
# 현재 함수에 대한 옵션값 확인
read.csv
# 현재 함수에 대한 도움말 기능
?read.csv
library(tidyverse)
data = read_delim(file = "zipIncome.csv", delim = ',')
v = data %>%
select(MeanEducation, MeanHouseholdIncome) #pick the variable
# set up cut-off values
breaks = c(0,2,4,6,8,10,12,14,16,18,20)
# specify interval/bin labels
tags = c("[0-2)","[2-4)", "[4-6)", "[6-8)", "[8-10)", "[10-12)","[12-14)", "[14-16)","[16-18)", "[18-20)")
# bucketing values into bins
group_tags = cut(v$MeanEducation, breaks = breaks, include.lowest = TRUE, right = FALSE, labels=tags)
# inspect bins
summary(group_tags)
ggplot(data = as_tibble(group_tags), mapping = aes(x=value)) +
geom_bar(fill="bisque",color="white",alpha=0.7) +
stat_count(geom="text", aes(label=sprintf("%.4f",..count../length(group_tags))), vjust=-0.5) +
labs(x='mean education per house') +
theme_minimal()
library(tidyverse)
df_raw <- data.frame(var1 = c(1, 2, 1), var2 = c(2, 3, 2))
df_raw %>%
dplyr::rename(v2 = var2)
mpg %>%
dplyr::mutate(total = (cty + hwy) / 2) %>%
dplyr::select(total)
# 데이터 (data)에서 만족도 (sat)에 대한 평균 및 분산은 다음과 같다.
library(tidyverse)
data %>%
dplyr::summarise(meanSat = mean(sat, na.rm = T)
, varSat = var(sat, na.rm = T)
)
library(ggplot2)
usedcars
graphics::text
curve(dnorm(x, mean = 0, sd = 1), from = -4, to = 4)
#========================================================
# 4a 답변
#========================================================
zValue = qnorm(0.05) # 5 %
zValue
# 저변 직선 부의 좌표
x = seq (-4, zValue, length = 50) # x 값을 50 분할
y = rep (0, 50) # y 좌표는 모두 0
# 확률 밀도 곡선의 좌표
revx = rev (x) # x 좌표를 반대 방향으로 정렬
dx = dnorm (revx) # x 좌표에 해당하는 곡선의 값 (y 좌표)
# 직선 부와 곡선 부의 좌표를 합병
xvals = c(x, revx)
yvals = c(y, dx)
# 표준 정규 분포를 그려 다각형을 채우기 추가
curve(dnorm(x, mean = 0, sd = 1), -4, 4)
polygon (xvals, yvals, col = "gray") # 왼쪽 2.5 % 기각 영역 채우기
# 오른쪽 5 % 영역
xvals = c(seq(4, -zValue, length = 50), seq(-zValue, 4, length = 50))
yvals = c(rep(0, 50), dnorm(seq(-zValue, 4, length = 50), mean = 0, sd = 1))
polygon(xvals, yvals, col = "gray")
text (-3, 0.1, "5 %")
text (3, 0.1, "5 %")
#========================================================
# 4b 답변
#========================================================
zValue = qnorm(0.025) # 2.5 %
zValue
# 저변 직선 부의 좌표
x = seq (-4, zValue, length = 50) # x 값을 50 분할
y = rep (0, 50) # y 좌표는 모두 0
# 확률 밀도 곡선의 좌표
revx = rev (x) # x 좌표를 반대 방향으로 정렬
dx = dnorm (revx) # x 좌표에 해당하는 곡선의 값 (y 좌표)
# 직선 부와 곡선 부의 좌표를 합병
xvals = c(x, revx)
yvals = c(y, dx)
# 표준 정규 분포를 그려 다각형을 채우기 추가
curve(dnorm(x, mean = 0, sd = 1), -4, 4)
polygon (xvals, yvals, col = "gray") # 왼쪽 2.5 % 기각 영역 채우기
# 오른쪽 2.5 % 영역
xvals = c(seq(4, -zValue, length = 50), seq(-zValue, 4, length = 50))
yvals = c(rep(0, 50), dnorm(seq(-zValue, 4, length = 50), mean = 0, sd = 1))
polygon (xvals, yvals, col = "gray")
text (-3, 0.1, "2.5 %")
text (3, 0.1, "2.5 %")
iris$Species
unclass(iris$Species)
library(tidyverse)
x = c("a", "b", "b", "b", "c", "c")
table(x)
y = table(x)
sort(y)
tData = sort(y, decreasing=T)
tData
tData[order(as.factor(names(tData)))]
library(dplyr)
bmi = function(height, weight) {
round(weight / (height / 100)^2, digits = 2)
}
data = data.frame(
height = c(250, 180, 165, 185, 130)
, weight = c(75, 60, 60, 98, 95)
)
data
data %>%
dplyr::mutate(bmi = bmi(height, weight)
, result = case_when(
bmi <= 18.5 ~ "저체중"
, 18.5 < bmi & bmi <= 24.9 ~ "정상"
, 25 <= bmi & bmi <= 29.9 ~ "과체중"
, 30 <= bmi ~ "비만"
, TRUE ~ "NULL"
)
)
dfData = data.frame(
a = rnorm(10),
b <- rnorm(10)
)
dfData
library(RmecabKo)
install_mecab("c:/mecab")
x = ('반갑습니다. 오늘 정말 날씨가 좋습니다. 전국공공노조협의회')
pos(x)
data = data.frame(
height = c(100, 150, 200, 250, 300)
, weight = c(80, 60, 70, 80, 50)
)
xAxis = data$height
yAxis = data$weight
lmFit = lm (yAxis ~ xAxis)
nPred = predict(lmFit, data, interval="prediction")
# 예측구간
nFit = nPred[ , 1]
# 하단 신뢰구간
nLwr = nPred[ , 2]
# 상단 신뢰구간
nUpr = nPred[ , 3]
plot(xAxis, yAxis, ylim = c(0, 150))
abline(lmFit, lwd = 2, col = "blue")
lines(xAxis, nLwr, col = "red")
lines(xAxis, nUpr, col = "red")
library(dplyr)
data = c(16, 25, 32, 15, 2, 1)
data
nIndex = which(data == max(data, na.rm = T))
data[nIndex] = 20
data
data = c(10, 20, 30, NA)
data
mean(data, na.rm = T)
#
install.packages("rattle.data")
library(rattle.data)
rattle.data::weather$Cloud3pm
#
# install.packages("DBI")
# install.packages("RMySQL")
library(DBI)
library(RMySQL)
sqlType = dbDriver("MySQL")
dbCon = dbConnect(sqlType, dbname="test", user="root", password="root")
result = dbGetQuery(dbCon, "select * from employees")
head(result)
dbDisconnect(dbCon)
#
data = data.frame(
addr = c("서울특별시 금천구 가산동"
, "서울특별시 금천구 가산1동"
, "서울특별시 금천구 가산1"
, "서울특별시 금천구 가산"
)
)
nRowCount = grep("*동$", data$addr)
grepl$addr[1]
aa = gregexpr("\\s", as.character(data$addr[1]))
names(aa)
# 1 5
# 7 9
# 11 13
nchar(as.character(data$addr[1]))
require(stringi)
require(stringr)
stri_length(data$addr[1])
as.character(data$addr[1])
string
gsub("*동$", data$addr[nRowCount])
data$addr[nRowCount]
match("*동$", data$addr)
#
install.packages("ggplot2")
library(ggplot2)
qplot
#
library(tidyverse)
data = data.frame(
sDate = c("2017-01-03", "2017-01-04", "2017-01-05")
, nValue = c(149.32, 154.73, 156.60)
)
dataL1 = data %>%
dplyr::mutate(dtDate = as.Date(sDate, "%Y-%m-%d"))
dplyr::glimpse(dataL1)
lmFit = lm(nValue ~ dtDate, data = dataL1)
plot(dataL1$dtDate, dataL1$nValue)
abline(lmFit, col = "red")
#
install.packages("openxlsx")
library(openxlsx)
data = read.xlsx("INPUT/his.xlsx")
hist(data$medal, ylim = c(0, 300))
#
library(tidyverse)
data = data.frame(
sRowNames = c("X2008", "X2009", "X2010")
)
data
dataL1 = data %>%
dplyr::mutate(year = str_replace(sRowNames, "X", ""))
dataL1
#
library(tidyverse)
data = data.frame(
sLiist = c("함부르크 대학교", "함부르크 대학교", "함부르크 대학교", "동경외국어대학교", "동경외국어대학교")
)
data
data %>%
group_by(sLiist) %>%
summarise(iNumber = n())
#
# 워드클라우드
names(data_cnt)
# 단어들의 빈도
freq=data_cnt
# 글자의 크기
scale=c(5,1)
# 90도로 회전된 각도로 출력되는 단어의 비율
rot.per=0.5
# 출력될 단어의 초소 빈도
min.freq=7
# TRUE이면 랜덤으로 단어 출력, FALSE이면 빈도수가 큰 단어일수록 중앙에 배치
random.order=F
# TRUE이면 단어색은 랜덤순으로 정해지고, FALSE이면 빈도순으로 정해짐
random.color=T
# 가장 작은 빈도부터 큰 빈도까지의 단어색
colors=palete
#
data = data.frame(
nAge = c(20, 23, 25)
, nHeight = c(170, 180, 190)
, nValue = c(149.32, 154.73, 156.60)
)
lmFit = lm(nValue ~ nAge + nHeight, data = data)
lmFit
#
nValue = rbinom(c(1:60000), size = 60000, prob = 0.2)
hist(nValue)
summary(nValue)
# nValue 변수에 대한 최대값이 12433이기 때문에 발생 확률은 0 %
pbinom(12589, size = 60000, prob = 0.2, lower.tail = F)
#
library(tidyverse)
data = data.frame(
sDate = c("2018-11-01", "2018-11-02", "2019-12-01", "2019-12-02", "2019-12-03")
, nValue = c("중국", "미국", "중국", "미국", "중국")
)
dataL1 = data %>%
dplyr::mutate(dtDate = as.Date(sDate, "%Y-%m-%d")
, sYear = format(dtDate, "%Y")
, sMonth = format(dtDate, "%m")
, sDay = format(dtDate, "%d")
)
# 월별, 국가별에 따른 빈도
dataL2 = dataL1 %>%
group_by(sYear, sMonth, nValue) %>%
summarise(iNumber = n())
dataL2
# 연도별, 국가별에 따른 빈도
dataL3 = dataL1 %>%
group_by(sYear, nValue) %>%
summarise(iNumber = n())
dataL3
#
nValue = rbinom(c(1:60000), size = 60000, prob = 0.2)
#
library(ggplot2)
diamonds %>%
ggplot()
#
library(openxlsx)
data = read.xlsx("INPUT/satis.xlsx")
#
library(stringr)
veSeq = seq(1, 1000, 1)
vTmpList = gsub("3|6|9", "짝", veSeq)
vList = gsub("0|1|2|4|5|7|8", "", vTmpList)
vList
#
veList = seq(600, 2130, 15)
veList
veConvList = floor(veList / 100) * 100
veConvList
#
data = data.frame(
game = c(1, 2 ,3)
, result = c(3, 3, 3)
, audience = c(13262, 6052, 3843)
)
plot(data$result, data$audience
, main = "메달과 엘리트 선수 증가수의 산점도"
, xlab = "result", ylab = "audience")
#
plot(iris$Species, iris$Sepal.Width
, xlab = "", ylab = "Width")
#
getwd()
setwd(getwd())
#
library(plyr)
data = c(1, 1, 1, 2, 2)
faData = factor(data)
rsData = plyr::mapvalues(faData, from = c(1:2), c("사과", "바나나"))
table(rsData)
#
library(ggplot2)
qplot
#
library(tidyverse)
library(nycflights13)
flights
#
library(dplyr)
mtcars %>%
dplyr::select(mpg)
#
library(jsonlite)
library(data.table)
jsData = fread("INPUT/News_Category_Dataset_v2.json", header = FALSE, sep = "]")
dfData = data.frame()
# for (iCount in dim(jsData)[1]) {
for (iCount in 1:5) {
sRowData = paste0("[", jsData[iCount], "]")
dfRowData = fromJSON(sRowData)
dfData = dplyr::bind_rows(dfData, dfRowData)
}
#
library(readtext)
data = readtext("INPUT/Test.txt", text_field = "texts")
data
#
nn=49 ; dt=0.1
u=rnorm(1:51)
u[1]=1
# u[1.5]=u[1]+1/2*dt*(u[1]+1)
u[2]=u[1]+dt*(u[1]+1/2*dt*(u[1]+1)+1)
for (i in 1:(nn)) {
u[i+2]=u[i]+2*dt*(u[i+1]+1)
print(u[i+2])
}
#
dfData = data.frame(
sDate = c("2019-01-03", "2019-01-05")
, nValue = c(210, 219.3)
)
dfDataL1 = dfData %>%
dplyr::mutate(dtDate = as.Date(sDate, "%Y-%m-%d"))
plot(dfDataL1$dtDate, dfDataL1$nValue)
#
xminusxbar = matrix(0,150,4)
ma = matrix(0,150,1)
for(i in 1:nrow(xminusxbar)){
xminusxbar[i,] = as.matrix(df[i,] - cm)
ma[i,1] = xminusxbar[i,] %*% cr %*% t(t(xminusxbar[i,]))
}
#
library(tidyverse)
dfData = data.frame(
x1 = c(1, 2, 3, 4, 5)
)
dfData
dfData %>%
dplyr::mutate(x1 = "Mark")
#
nSum = 0
for (iCount in 1:10) {
veList = seq(1, iCount, 1)
nTmpSum = sum(veList, na.rm = TRUE)
nSum = nSum + nTmpSum
cat(nTmpSum, " = ", veList, "\n")
}
cat(nSum)
#
library(textreadr)
library(rvest)
library(tidyverse)
library(xml2)
library(magrittr)
meta_data_all = data.frame()
page_url = "http://www.yes24.com/24/category/bestseller?CategoryNumber=001&sumgb=09&year=2019&month=1&PageNumber=1"
page_url = "http://www.yes24.com/Product/Goods/66997133"
bookg_page = read_html(page_url)
aa = #category_layout tr").eq(0).find(".goodsTxtInfo > p > a
bookg_page %>%
html_nodes("#category_layout:eq(0) > .goodsTxtInfo > p > a:eq(0)") %>%
html_text()
bookg_page %>%
html_nodes(".goodsTxtInfo > p > a") %>%
html_text()
toString(bookg_page %>% html_nodes("td.goodsTxtInfo > p > a")
%>% html_text_collapse)
dd = bookg_page %>%
html_nodes("td.goodsTxtInfo > p > a") %>%
html_text() %>%
str_replace("개", "")
#
library(tidyverse)
library(readxl)
library(stringr)
data = read_excel("INPUT/휴대폰 보유(2014_2018년).xlsx")
dataL1 = data %>%
tidyr::gather(key = tmpType, value = "value", -type, -typeAtcl) %>%
tidyr::separate(tmpType, into = c("typeNumber", "year"), sep = "_")
dataL2 = dataL1 %>%
tidyr::spread(key = "typeNumber", value = "value") %>%
dplyr::mutate(number = str_replace(number, ",", "")) %>%
dplyr::mutate_at(vars(year), funs(as.numeric)) %>%
dplyr::mutate_at(vars(number), funs(as.numeric)) %>%
dplyr::mutate_at(vars(isYes), funs(as.numeric)) %>%
dplyr::mutate_at(vars(isNo), funs(as.numeric)) %>%
dplyr::mutate(nYesNumber = number * isYes)
# 연도별 성별에 따른 휴대폰 보유 수
dataL2 %>%
dplyr::filter(type == "성별") %>%
dplyr::group_by(year, typeAtcl) %>%
dplyr::summarise(nSumYesNumber = sum(nYesNumber, na.rm = TRUE))
# 연도별 연령에 따른 휴대폰 보유 수
dataL2 %>%
dplyr::filter(type == "연령") %>%
dplyr::group_by(year, typeAtcl) %>%
dplyr::summarise(nSumYesNumber = sum(nYesNumber, na.rm = TRUE))
# 연도별 직업에 따른 휴대폰 보유 수
dataL2 %>%
dplyr::filter(type == "직업") %>%
dplyr::group_by(year, typeAtcl) %>%
dplyr::summarise(nSumYesNumber = sum(nYesNumber, na.rm = TRUE))
#
# Clear plots
if (! is.null(dev.list())) {
dev.off()
}
# Clear console
cat("\014")
# Clear Workspace
rm(list=ls())
a = c(1,3,10)
b = c(3,4,5)
a %in% b
! (a %in% b)
#
library(tidyverse)
census.data = read.csv("INPUT/101_DT_1IN1002_F_2010.csv", header = TRUE, skip = 2, fileEncoding = "euc-kr")
names(census.data) = gsub("[[:punct:]]+","_", gsub("[[:punct:]]$","", names(census.data)))
names(census.data)
dplyr::glimpse(census.data)
dfDataL1 = census.data %>%
dplyr::mutate_if(is.factor, as.character) %>%
dplyr::mutate(
C행정구역별_읍면동 = str_trim(C행정구역별_읍면동, side = c("both"))
, 행정구역별_읍면동 = str_trim(행정구역별_읍면동, side = c("both"))
, C행정구역별_읍면동 = str_replace(C행정구역별_읍면동, "'", "")
) %>%
dplyr::filter(nchar(C행정구역별_읍면동) == 5)
dplyr::glimpse(dfDataL1)
# 0 <- 39개가 나와야 맞는데....
dfDataL2 = dfDataL1 %>%
dplyr::filter(행정구역별_읍면동 %in% c("동부","읍부","면부"))
nrow(dfDataL2)
# 302 <- 263개가 나와야 하는데...
dfDataL2 = dfDataL1 %>%
dplyr::filter(! 행정구역별_읍면동 %in% c("동부","읍부","면부"))
nrow(dfDataL2)
#
shout = function() {
sReturn = "HELLO"
return (sReturn)
}
shout()
#
vSeq = seq(-pi, pi, 0.01)
plot(vSeq, sin(vSeq), type = 'l', xlab = "xlab", ylab = "ylab")
points(vSeq, cos(vSeq))
legend("topright"
, c("sin", "cos")
, col = c("black", "black")
, pch = c(1, NA)
, lty = c(NA, 1)
, cex = 0.8
)
#
data = data.frame(
xAxis = c(1, 2, 3)
, yAxis = c(1, 2, 4)
)
plot(data$xAxis, data$yAxis
# 각 점의 모양
, pch = 0
# x축과 y축의 라벨
, xlab = "X", ylab = "Y"
)
#
library(tidyverse)
dfData = data.frame(
sType = c("남", "남", "남", "남", "여", "여", "여")
, nAge = c(36, 60, 40, 80, 10, 15, 20)
)
dfData %>%
dplyr::group_by(sType) %>%
dplyr::summarise(nMedAge = median(nAge, na.rm = TRUE))
#
howfar = function(x, y) {
nReturn = sqrt(x^2 + y^2)
return(nReturn)
}
howfar(3, 4)
#
x = sample(c(0, 1), 7, replace = TRUE)
x
iNumber = length(x) - 2
for (iCount in 1:iNumber) {
iEndCount = iCount + 2
isTrue = all(x[iCount:iEndCount] == c(0, 0, 0))
cat(paste0(iCount, "-", iEndIndex, " : "), isTrue, "\n")
}
#
fnResult = function(x) {
if ((x %% 2) == 0) {
nValue = x / 2
} else {
nValue = (x + 1) / 2
}
return(nValue)
}
fnResult(31)
#
library(tidyverse)
lab = scan("")
lab %>%
as.data.frame() %>%
dplyr::mutate(y = ifelse(lab >= 0, 1, -1))
#
dfData = OrchardSprays
#
# (1) 자료형태 : data.frame
class(dfData)
# (2) 변수 개수 : 4개
ncol(OrchardSprays)
# (3) 관측 개수 : 64개
nrow(OrchardSprays)
#
# install.packages("tm") # for text mining
# install.packages("SnowballC") # for text stemming
# install.packages("wordcloud") # word-cloud generator
# install.packages("RColorBrewer") # color palettes
library(wordcloud)
library(tm)
library(SnowballC)
library(RColorBrewer)
filePath = "http://www.sthda.com/sthda/RDoc/example-files/martin-luther-king-i-have-a-dream-speech.txt"
my1.txt = readLines(filePath)
# 행의 수 : 46
length(my1.txt)
# 빈도수 상위 5개 단어 : "will", "freedom", "ring", "dream", "day"
# 코퍼스로 데이터 읽기
docs = Corpus(VectorSource(my1.txt))
# 문서 내용 검사
inspect(docs)
# 텍스트 변환 (특수문자를 공백으로 변경 )
toSpace = content_transformer(function (x , pattern ) gsub(pattern, " ", x))
docs = tm_map(docs, toSpace, "/")
docs = tm_map(docs, toSpace, "@")
docs = tm_map(docs, toSpace, "\\|")
# 텍스트 전처리
# Convert the text to lower case
docs = tm_map(docs, content_transformer(tolower))
# Remove numbers
docs = tm_map(docs, removeNumbers)
# Remove english common stopwords
docs = tm_map(docs, removeWords, stopwords("english"))
# Remove your own stop word
# specify your stopwords as a character vector
docs = tm_map(docs, removeWords, c("blabla1", "blabla2"))
# Remove punctuations
docs = tm_map(docs, removePunctuation)
# Eliminate extra white spaces
docs = tm_map(docs, stripWhitespace)
# 워드클라우드를 위한 문서 행렬 작성
dtm = TermDocumentMatrix(docs)
m = as.matrix(dtm)
v = sort(rowSums(m),decreasing=TRUE)
d = data.frame(word = names(v),freq=v)
# 상위 5개 단어
head(d, 5)
# 워드 클라우드 생성
set.seed(1234)
wordcloud(words = d$word, freq = d$freq, min.freq = 1,
max.words=200, random.order=FALSE, rot.per=0.35,
colors=brewer.pal(8, "Dark2"))
#
dfData = quakes
#
# (1) 자료형태 : data.frame
class(dfData)
# (2) 변수 개수 : 5개
ncol(dfData)
# (3) 관측 개수 : 1000개
nrow(dfData)
# (4) 직선관계
lmFit = lm(long ~ mag, data = dfData)
coef(lmFit)[1]
nCor = cor(dfData$mag, dfData$long)
sMain = paste("R = ", round(nCor, 2)
, ","
, "Y = ", round(coef(lmFit)[2], 2), "x + ", round(coef(lmFit)[1], 2)
)
plot(dfData$mag, dfData$long, main = sMain)
abline(lmFit, col = 'blue')
#
library(MASS)
dfData = UScrime
# (1) 자료형태 : data.frame
str(dfData)
# (2) 변수 개수 : 16개
ncol(dfData)
# (3) 관측 개수 : 47개
nrow(dfData)
# (4) 상관계수 : 0.1773206
cor(dfData$U2, dfData$y)
# (5) 실업률의 평균 : 33.97872
mean(dfData$U2, na.rm = TRUE)
#
# (6) 상관계수 : 0.7459248
xAxis = dfData$U1
yAxis = dfData$U2
cor(xAxis, yAxis)
lmFit = lm(yAxis ~ xAxis)
plot(xAxis, yAxis)
abline(lmFit, col = 'blue')
# (7) 최대값 : 168, 최소값 : 3
max(dfData$Pop, na.rm = TRUE)
min(dfData$Pop, na.rm = TRUE)
# (8) 상관계수 : 0.4413199
xAxis = dfData$GDP
yAxis = dfData$y
cor(xAxis, yAxis)
lmFit = lm(yAxis ~ xAxis)
plot(xAxis, yAxis)
abline(lmFit, col = 'blue')
# (9) 상관계수 비교 : 0.7459248 vs 0.4413199
cor(dfData$U1, dfData$U2)
cor(dfData$GDP, dfData$y)
# (10) 상관계수 : -0.3899229
cor(dfData$Ed, dfData$Prob)
#
dfData = data.frame(
nHeight = c(179, 161, 165, 185, 158)
, nWeight = c(75, 72, 60, 98, 65)
)
# $ : 데이터 프레임에서 변수 추출
dfData$nHeight
library(dplyr)
# %>% : 파이프 연산자로서 dplyr에서 "그리고"와 동일
# 즉 dfData 그리고 (1줄) nHeight 변수 추출 (2줄)
dfData %>%
dplyr::select(nHeight)
#
library(tidyverse)
mtcars %>%
data.frame() %>%
ggplot(aes(x = mpg)) +
geom_histogram(binwidth = 0.01) +
annotate(
"rect"
, xmin = -0.02
, xmax = 0.02
, ymin = 0
, ymax = sum(mpg == 0, na.rm = TRUE) * 1.1
, alpha=0.3
, fill="red") +
xlab(NULL)
#
lm(formula = as.numeric(a$income) ~ as.numeric(a$hours), data = a)
#
library(TTR)
macd = MACD(price, nFast=15, nSlow=30,nSig=9,maType=SMA, percent = FALSE)
library(quantmod)
library(PerformanceAnalytics)
getSymbols("^NSEI")
chartSeries(NSEI, TA = NULL)
data = NSEI[,4]
# NA 제거
dfDataL1 = na.omit(data)
macd = MACD(dfDataL1, nFast=12, nSlow=26,nSig=9,maType=SMA,percent = FALSE)
plot(macd$macd - macd$signal)
#
Sys.setlocale("LC_ALL", "korean")
#
# 현재 R 프로그램에서 예약어로 사용중인 논리형 변수 (T/F)를 paramT로 변경함
BSM = function(S, paramT, K, sigma, Rf) {
D1 = (log(S / K, base = exp(1)) + paramT * (Rf + 0.5 * sigma^2)) / sigma * paramT^0.5
D2 = D1 - sigma * paramT^0.5
print(S * pnorm(D1) - K * exp(-Rf * paramT) * pnorm(D2))
}
BSM(100, 0.5, 100, 0.1, 0.04)
install.packages("devtools")
#
dfData = data.frame(
학교명 = c("강릉원주대학교", "강릉원주대학교1")
, isTure = c(TRUE, FALSE)
)
nIndex = which(dfData$학교명 == "강릉원주대학교")
dfData[nIndex, ]
#
library(tidyverse)
dfData = data.frame(
nCount = seq(1, 1000, 1)
)
dfDataL2 = dfData %>%
dplyr::mutate(
isType = case_when(
(nCount %% 3) == 0 ~ TRUE
, TRUE ~ FALSE
)
)
dplyr::tbl_df(dfDataL2)
#
data = read.csv(file = "INPUT/csv_exam.txt", sep = " ", header = FALSE)
data
#
library(foreign)
dfData = read.spss(
file = "INPUT/SPSS_Dataset.sav"
, use.value.label = TRUE
, to.data.frame = TRUE
)
head(dfData)
#
# 빈 목록 만들기
liList = list()
# 4 회
for (i in 1:4) {
# 정규 난수가 벡터 생성성
nRnorm = rnorm(10)
# liList의 끝에 추가
liList = c(liList, list(nRnorm))
}
liList
# 요소 수가 4개의 목록을 표시
str(liList)
#
library(KoNLP)
#
# 현재 라이브러리 경로 확인
.libPaths()
# 현재 라이브러리 경로 추가
.libPaths(c("C:/Users/indisystem/Documents/R/win-library/3.6"
, "C:/Program Files/R/R-3.6.2/library")
)
#
# 소수점 셋째 자리 숫자가 5인 경우 R은 항상 가장 가까운 짝수로 반올림합니다.
# 예를 들어 round(1.5) 및 round(2.5)는 모두 2를 반환하나 round(-4.5)는 -4를 반환합니다.
round(1.5)
round(2.5)
round(-4.5)
#
dfData = data.frame(
sKey = c("국어", "수학", "영어")
, nValue = c(70, 100, 85)
)
xAxis = 1:nrow(dfData)
xAxisLabel = dfData$sKey
yAxis = dfData$nValue
plot(xAxis, yAxis, xaxt = "n", type = "b", xlab = "", ylab = "점수")
axis(1, at = xAxis, labels = xAxisLabel)
#
library(ggplot2)
dfData = data.frame(
nXaxis = c(1, 2, 3, 4)
, nYaxis = c(1, 4, 3, 4)
)
ggplot(data = dfData, aes(x = nXaxis, y = nYaxis, size = nYaxis)) +
geom_point()
#
library(ggplot2)
library(sf)
mapShp = sf::read_sf("INPUT/CTPRVN_201905/TL_SCCO_CTPRVN.shp")
ggplot() +
geom_sf(data = mapShp, aes(fill = CTP_ENG_NM), color = "black")
#
library(ggplot2)
library(tidyverse)
dfData = data.frame(
xAxis = c(1:19)
, nClass1 = c(2.2, 2, 4.5, 6, 3, 7, 2.5, 2, 1.5, 1, 3, 3, 3.5, 2, 3, 2, 2.5, 2.8, 2)
, nClass2 = c(2, 2.8, 3, 4, 5, 4, 3, 4, 3, 4, 3, 2, rep(NA, 7))
, nClass3 = c(3.1, 3, 3.5, 3.9, 3.1, 3.3, 3.4, 4, 4.3, 4.2, 4.1, 4, 4.5, 4.5, 3.8, 3.5, 3, rep(NA, 2))
)
dfDataL1 = dfData %>%
tidyr::gather(key = type, value = "value", -xAxis)
ggplot(data = dfDataL1, aes(x = xAxis, y = value, colour = type)) +
geom_point() +
geom_line()
dfDataL2 = dfDataL1 %>%
dplyr::group_by(type) %>%
dplyr::summarise(nMeanValue = mean(value, na.rm = TRUE))
ggplot(data = dfDataL2, aes(x = type, y = nMeanValue)) +
geom_point()
#
library(NIADic)
library(rJava)
library(KoNLP)
# useNIADic()
library(memoise)
library(dplyr)
# install.packages("devtools")
# library(devtools)
# install_github('haven-jeon/NIADic/NIADic', build_vignettes = TRUE)
extractNoun("대한민국의 영토는 한반도와 그 부속도서로 한다")
#
library(ggplot2)
dfData = data.frame(
xAxis = c(1:19)
, nClass1 = c(2.2, 2, 4.5, 6, 3, 7, 2.5, 2, 1.5, 1, 3, 3, 3.5, 2, 3, 2, 2.5, 2.8, 2)
, nClass2 = c(2, 2.8, 3, 4, 5, 4, 3, 4, 3, 4, 3, 2, rep(NA, 7))
, nClass3 = c(3.1, 3, 3.5, 3.9, 3.1, 3.3, 3.4, 4, 4.3, 4.2, 4.1, 4, 4.5, 4.5, 3.8, 3.5, 3, rep(NA, 2))
)
for (iCount in 1:3) {
sColName = colnames(dfData)[iCount + 1]
ggplot(data = dfData, aes(x = xAxis, y = !!as.name(sColName))) +
geom_point() +
geom_line() +
ggsave(filename = paste0("FIG/", sColName, ".png"))
}
#
# 현재 작업 디렉터리 읽기
getwd()
# 현재 작업 디렉터리 셋팅
setwd(getwd())
# 파일 읽기 (현재 작업 디렉터리 하위에 위치)
dfData = read_excel(paste0(getwd(), "/data/data_ex1.xlsx"), header = TRUE)
#
library(ggplot2)
library(sf)
library(tidyverse)
library(fs)
library(leaflet)
dfData = data.frame(
sCity = c("서울특별시", "인천광역시", "경기도", "강원도", "대전광역시", "세종특별자치시", "충청남도", "충청북도", "광주광역시", "전라남도", "전라북도", "부산광역시", "울산광역시", "대구광역시", "경상남도", "경상북도", "제주특별자치도")
, nVal = c(0.1, 0.5, 0.1, 0.5, 0.5, 0.1, 0.5, 0.5, 0.1, 0.1, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.1)
)
mapShp = sf::read_sf("INPUT/CTPRVN_201905/TL_SCCO_CTPRVN.shp", options = "ENCODING=CP949")
mapShpL1 = mapShp %>%
dplyr::left_join(dfData, by = c("CTP_KOR_NM" = "sCity"))
ggplot(data = mapShpL1) +
geom_sf(aes(fill = nVal), color = "black")
mapShpL2 = st_transform(mapShpL1, "+init=epsg:4326")
nVal = mapShpL1[["nVal"]]
fnPal = colorNumeric(palette = "viridis", domain = nVal)
leaflet::leaflet() %>%
addTiles() %>%
addPolygons(
data = mapShpL2
, color = fnPal(nVal)
, label = as.character(nVal)
, stroke = FALSE
) %>%
addLegend(pal = fnPal
, values = nVal
, title = "Value"
)
# R프로그래밍에서 빈이라는게 뭔가요??
dfData = data.frame()
dfData
length(dfData)
# reorder이 순서를 어떻게 바꾸는건가요??
library(dplyr)
dfData = iris
dplyr::tbl_df(dfData)
# "Sepal.Length"를 기준으로 오름차순 정렬
dfData %>%
dplyr::arrange(Sepal.Length) %>%
tbl_df()
# "Sepal.Length"를 기준으로 내림차순 정렬
dfData %>%
dplyr::arrange(desc(Sepal.Length)) %>%
tbl_df()
# filter(flights, month %in% c(11,12))에서 (11,12)앞에붙은 c는 뭔가요??
library(dplyr)
library(nycflights13)
dfData = flights
dplyr::tbl_df(dfData)
# 11월 및 12월에 해당하는 데이터 정제
dfData %>%
dplyr::filter(month %in% c(11, 12))
# 내용을 정정하눈 단축어라는데 뭘고치는거고 Cmd는 뭔가요? 명령프롬프트약자아닌가요...?
ctrl+alt+down
ctrl+alt+down
ctrl+alt+down
ctrl+alt+down
ctrl+alt+down
# 두번째 사진은 보기랑 비교해서 풀이 해주세요 ㅜㅜ
A = cbind(
c(1, 2, 3)
, c(4, 5, 6)
, c(7, 8, 9)
)
colnames(A) = c("A", "B", "C")
rownames(A) = c("r1", "r2", "r3")
A[ , "A"]
A[ , "A"]
A[-c(2,3), ]
A[ , -c(2:3)]
# "황소걸음" 2019 데이터 분석 준전문가 한 권으로 끝내기 P.241 에 해당하는 배깅 부분입니다.
# 교재에 나와있는 것과 똑같이 했는데 계속 에러가 뜨는데 어떻게 해결해야 할지 모르겠네요,,,
library(adabag)
library(rpart)
data(iris)
set.seed(1)
train = c(
sample(1:50, 25)
, sample(51:100, 25)
, sample(101:150, 25)
)
iris.bagging = bagging(
formula = Species ~ .
, data = iris[train, ]
, mfinal = 10
, control = rpart.control(maxdepth = 1)
)
iris.bagging
f = function(x, a) {
return((x - a) ^ 2)
}
f(1:2, 3)
# 여기서 .[[1]]이 뭔가요??
library(stringr)
dfData = "albcld" %>%
str_split("\\/")
dfData[1]
# 9번 어떻게 하는건가요?
d1 = 1:50
d2 = 51:100
nSortD1 = sort(d1)[1:10]
nSortD2 = sort(d2)[1:10]
d3 = c(nSortD1, nSortD2)
d3
# 6-12모르겠어요ㅜㅜ
v1 = 51:90
# 6번
for (iCount in v1) {
if ((iCount %% 7) == 3) {
cat(iCount, "\n")
}
}
# 7번
for (iCount in 1:length(v1)) {
iVal = v1[iCount]
if ((iVal %% 7) == 0) {
iVal = 0
}
cat(iVal, "\n")
}
# 8번
iSum = 0
for (iVal in v1) {
if ((iVal %% 2) == 0) {
iSum = iSum + iVal
}
}
cat(iSum, "\n")
# 12번
for (iCount in v1) {
if ((iCount %% 7) != 0) {
cat(iCount, "\n")
}
}
# 혼자 공부 중인데 잘 모르겠어요
# 도와주세요ㅜㅜ
library(tidyverse)
dfData = data.frame(
sKey = c("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")
, iVal = c(10, 8, 14, 15, 9, 10, 15, 12, 9, 7, 8, 7)
)
# (1) 풀이
dfData %>%
dplyr::summarise(iSum = sum(iVal, na.rm = TRUE))
# (2) 풀이
dfData %>%
dplyr::filter(sKey == "MAR")
# (3) 풀이
dfData %>%
dplyr::filter(sKey %in% c("JUL", "SEP"))
# (4) 풀이
dfData %>%
dplyr::filter(sKey %in% c("JAN", "FEB", "MAR", "APR", "MAY", "JUN")) %>%
dplyr::summarise(iSum = sum(iVal, na.rm = TRUE))
# (5) 풀이
dfData %>%
dplyr::filter(! sKey %in% c("JAN", "FEB", "MAR", "APR", "MAY", "JUN")) %>%
dplyr::summarise(iSum = sum(iVal, na.rm = TRUE))
# 근데 제가 아직 if나 for이런 부분을 공부하지 않아서요ㅜㅜ
# 명령어를 간단하게 해주실 수 있을까요?
# 조건문 : if, else
# 조건에 따라 분류할 경우 if문, else문을 사용해야 합니다.
# "조건식"은 TRUE 또는 FALSE 논리 값을 하나만 반환하는 식을 넣어야 합니다.
x = 2
# if (조건식)
if (x > 0) {
# 조건 표현식이 TRUE 일 때 실행되는 부분
sum(1:x, na.rm = TRUE)
} else {
# 조건식이 FALSE 때 실행되는 부분
x = -x
sum(1:x, na.rm = TRUE)
}
# 반복문 : for
# for (변수 in 목록)에서 목록 요소가 순차적으로 수행된다.
# 따라서 반복 횟수는 "목록의 개수"가 된다.
x = 0
# for (변수 in 목록)
for (i in c(1:5)) {
# 벡터와리스트의 요소가 비우지 않는 한 표현식이 반복된다
x = x + 1
}
x
# 산점도안에 결정계수(R-square)가 있고 R-square를 표현하는 line을 만드는 방법이 궁금합니다!
dfData = data.frame(
iCal = c(1, 2, 3, 4, 5)
, iVal = c(3, 6, 8, 10, 11)
)
xAxis = dfData$iCal
yAxis = dfData$iVal
# 산점도
plot(xAxis, yAxis)
# 선형 회귀선
oLmFit = lm(yAxis ~ xAxis)
abline(oLmFit, col = "red")
# 범례 생성
oSummary = summary(oLmFit)
nRsquare = oSummary$adj.r.squared
nPvalue = oSummary$coefficients[2,4]
oLegend = vector("expression", 2)
oLegend[1] = substitute(expression(R^2 == nRsquareList),
list(nRsquareList = format(nRsquare, digits = 3)))[2]
oLegend[2] = substitute(expression(P-Value == nPvalueList),
list(nPvalueList = format(nPvalue, digits = 2)))[2]
legend("bottomright", legend = oLegend, bty = "n")
# R을 설치하고 dplyr 패키지를 설치하던 중 하기와 같은 메세지가 뜨면서 설치가 안되네요.
# Error in if (any(diff)) { : TRUE/FALSE가 필요한 곳에 값이 없습니다.
# r로 웹페이지 크롤링
# 이런 자료를 크롤링해서 엑셀로 정리하고싶은데 어떻게 해야하나요? 이게 1페이지인데 끝 페이지까지요
library(rvest)
library(tidyverse)
library(data.table)
Sys.setlocale("LC_ALL", "English")
options(encoding = "UTF-8")
Sys.setenv(LANG = "en_US.UTF-8")
sUrl = paste0("https://franchise.ftc.go.kr/user/extra/main/62/firMst/list/jsp/LayOutPage.do?column=&search=&searchFirRegNo=&selUpjong=&selIndus=&srow=999999&spage=1")
dfData = xml2::read_html(sUrl) %>%
rvest::html_nodes(xpath = paste0('//*[@id="txt"]/table')) %>%
rvest::html_table()
dfDataL1 = dfData[[1]]
dplyr::tbl_df(dfDataL1)
# Write Using L3 Data Frame
data.table::fwrite(
dfDataL1
, sep = ","
, file = paste0("OUTPUT/dfDataL1_", format(Sys.time(), "%Y%m%d%H%M%S"), ".csv")
, append = FALSE
, row.names = FALSE
, col.names = TRUE
, dateTimeAs = "write.csv"
, na = NA
)
# https://franchise.ftc.go.kr/user/extra/main/62/firMst/list/jsp/LayOutPage.do?column=&search=&searchFirRegNo=&selUpjong=&selIndus=&srow=999999&spage=1
# 여기 정보공개서의 영업표지나 상호를 누르면 링크가 있어서 타고 연결이 되는데 그건 같이 못하나요? 같이 크롤링 되게요!
library(rvest)
library(tidyverse)
library(data.table)
Sys.setlocale("LC_ALL", "English")
options(encoding = "UTF-8")
Sys.setenv(LANG = "en_US.UTF-8")
fnGetUrlHref = function(sUrl, sXpath) {
xml2::read_html(sUrl) %>%
rvest::html_nodes(xpath = paste0(sXpath)) %>%
rvest::html_attr("href")
}
sUrl = paste0("https://franchise.ftc.go.kr/user/extra/main/62/firMst/list/jsp/LayOutPage.do?column=&search=&searchFirRegNo=&selUpjong=&selIndus=&srow=9999&spage=1")
dfData = xml2::read_html(sUrl) %>%
rvest::html_nodes(xpath = paste0('//*[@id="txt"]/table')) %>%
rvest::html_table()
dfDataL1 = dfData[[1]] %>%
dplyr::mutate(
sNameLink = paste0("https://franchise.ftc.go.kr", fnGetUrlHref(sUrl, '//*[@id="txt"]/table/tbody/tr[*]/td[2]/a'))
, sCompLink = paste0("https://franchise.ftc.go.kr", fnGetUrlHref(sUrl, '//*[@id="txt"]/table/tbody/tr[*]/td[3]/a'))
)
dplyr::tbl_df(dfDataL1)
# library(rvest)
# library(pforeach)
#
# i = 1
#
# npforeach(i=1:2, .c=rbind)({
# cat(i, "\n")
# url <- sprintf("http://lain.gr.jp/voicedb/profile/list/cid/%d", i)
#
# # Sys.sleep(10)
# html <- html(url)
#
# li_nodes <- html %>% html_nodes(xpath = '/html/body/div/div/div[2]/ul/li')
#
# url <- li_nodes %>% html_nodes(xpath = "a") %>% html_attr("href")
# name <- li_nodes %>% html_nodes(xpath = "a") %>% html_text %>% iconv("utf8", "cp932")
# sex <- li_nodes %>% html_nodes(xpath = "img") %>% html_attr("title") %>% iconv("utf8", "cp932")
#
# data.frame(url=url[-(1:4)], name=name[-(1:4)], sex)
# }) -> result
# 인터넷에 올라온 웹스크래핑 설명을 본 후 제가 직접 활용해보려 하니 바로 막혀버렸습니다 ㅠㅠ
# 지금 맞닥뜨린 문제는 입력해야 할 url의 소스 코드가 뭔지 모르겠다는 것입니다.
# 크롬 개발자 도구에서 해당 페이지 html의 어떤 태그를 html_nodes()에 넣어야 하고, 이 태그가 어떤 원리 또는 이유에서 선택되는지가 궁금합니다.
# 설명글에서는 그냥 크롬 개발자 도구 스크린샷 찍은 것을 보여준 후 이러이러 하니 "searchCont라는 클래스가 붙은 디비전(divisodn) 아래 링크가 들어 있다"와 같이 간단히 언급하고 넘어가서, 개발자 도구를 봐도 어떤 태그를 선택해야 하는지 모르겠습니다.. 흑
# 제가 해본 코드는 다음과 같습니다.
# 오유 시사게시판 게시글 내용을 스크래핑 해보려 했는데 망이네요 ㅜ
# 일단, 첫 번째 페이지 url의 html을 불러온 부분( html <- read_html(urls[1]) )부터 설명글과 달리 저는 xml_document가 아닌 html_document가 뜹니다 ;
# html2, html3 리스트에는 아무것도 들어가지 않은 걸로 뜨고요.
library(foreach)
library(rvest)
library(tidyverse)
library(data.table)
library(dplyr)
Sys.setlocale("LC_ALL", "English")
options(encoding = "UTF-8")
Sys.setenv(LANG = "en_US.UTF-8")
# Option
iPage = 10
fnGetUrlText = function(sUrl, sXpath) {
read_html(sUrl) %>%
html_nodes(xpath = paste0(sXpath)) %>%
html_text()
}
dfDataL1 = data.frame()
foreach::foreach(iCount = 1:iPage, .combine=c) %do% {
cat(iCount, "\n")
sUrl = paste0("http://www.todayhumor.co.kr/board/list.php?table=sisa&page=", iCount)
dfData = data.frame(
arrNumber = fnGetUrlText(sUrl, '/html/body/div[4]/div/div/table/tbody/tr[*]/td[1]/a')[1:30]
, arrTitle = fnGetUrlText(sUrl, '/html/body/div[4]/div/div/table/tbody/tr[*]/td[3]/a')
, arrsName = fnGetUrlText(sUrl, '/html/body/div[4]/div/div/table/tbody/tr[*]/td[4]/a')
, arrDate = fnGetUrlText(sUrl, '/html/body/div[4]/div/div/table/tbody/tr[*]/td[5]')
, arrCount = fnGetUrlText(sUrl, '/html/body/div[4]/div/div/table/tbody/tr[*]/td[6]')
, arrRecom = fnGetUrlText(sUrl, '/html/body/div[4]/div/div/table/tbody/tr[*]/td[7]')
)
dfDataL1 = dplyr::bind_rows(dfDataL1, dfData)
}
dplyr::tbl_df(dfDataL1)
# RA_gbm05 <- gbm(label ~ ., RA, distribution = "bernoulli", n.trees = 50, cv.folds=5)
# GBM 분석 코드를 작성을 하였고요.
# 이것을 토대로 교차 검증 값에 대한 점수 값을 구하려 합니다.
# 어떻게 해야 할 까요???
# 파이썬에서는"cross_val_score" 이런 코드를 사용 하던데,
# R 코드로는 어떻게 작성을 해야 할 까요???
library(rsample) # data splitting
library(gbm) # basic implementation
library(xgboost) # a faster implementation of gbm
library(caret) # an aggregator package for performing many machine learning models
library(h2o) # a java-based platform
library(pdp) # model visualization
library(ggplot2) # model visualization
library(lime) # model visualization
# Create training (70%) and test (30%) sets for the AmesHousing::make_ames() data.
# Use set.seed for reproducibility
set.seed(123)
ames_split = initial_split(AmesHousing::make_ames(), prop = 0.7)
ames_train = training(ames_split)
ames_test = testing(ames_split)
# for reproducibility
set.seed(123)
# train GBM model
gbm.fit = gbm(
formula = Sale_Price ~ .,
distribution = "gaussian",
data = ames_train,
n.trees = 10000,
interaction.depth = 1,
shrinkage = 0.001,
cv.folds = 5,
n.cores = NULL, # will use all cores by default
verbose = FALSE
)
# print results
print(gbm.fit)
## gbm(formula = Sale_Price ~ ., distribution = "gaussian", data = ames_train,
## n.trees = 10000, interaction.depth = 1, shrinkage = 0.001,
## cv.folds = 5, verbose = FALSE, n.cores = NULL)
## A gradient boosted model with gaussian loss function.
## 10000 iterations were performed.
## The best cross-validation iteration was 10000.
## There were 80 predictors of which 45 had non-zero influence.
# get MSE and compute RMSE
sqrt(min(gbm.fit$cv.error))
## [1] 29133.33
# plot loss function as a result of n trees added to the ensemble
gbm.perf(gbm.fit, method = "cv")
# R을 설치하고 dplyr 패키지를 설치하던 중
# 하기와 같은 메세지가 뜨면서 설치가 안되네요.
# Error in if (any(diff)) { : TRUE/FALSE가 필요한 곳에 값이 없습니다.
# 우찌 해야 될까요?
# R v3.4에서 발생되는 오류로 판단됩니다.
install.packages("tidyverse",dependencies = TRUE,repos = "http://cran.us.r-project.org")
# https://stackoverflow.com/questions/38948664/error-when-install-package-dplyr-in-r-error-in-install-packages-missing-value/44160760
library(KoNLP)
Sys.setenv(JAVA_HOME="C:\\Users\\jmpark\\AppData\\Local\\Programs\\AdoptOpenJDK\\")
Sys.getenv("JAVA_HOME")
useSejongDic()
sSentence = "아버지가 방에 스르륵 들어가신다."
extractNoun(sSentence)
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'자기계발 > 지식iN·문의사항' 카테고리의 다른 글
[지식iN] R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 (2) : 2020년 03월 30일 (0) | 2020.04.30 |
---|---|
[지식iN] R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 (3) : 2020년 04월 30일 (0) | 2020.04.30 |
[지식iN] R 프로그래밍 문의 (0) | 2019.09.26 |
[지식iN] 자바스크립트 프로그래밍 문의 (0) | 2019.09.26 |
[지식iN] R 프로그래밍 문의 (0) | 2019.09.26 |
최근댓글