정보
-
업무명 : R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 (2)
-
작성자 : 이상호
-
작성일 : 2020-03-30
-
설 명 :
-
수정이력 :
내용
[특징]
-
네이버 지식iN에서 R 프로그래밍 관련 답변을 위해서 체계적인 소스 코드 현행화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
-
추가로 2020년 02월 21일 및 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년 03월 30일 업로드
#===============================================================================================
# Routine : Main R program
#
# Purpose : NAVER 지식iN
#
# Author : MS. Sang-Ho Lee
#
# Revisions: V1.0 February 21, 2020 First release (MS. Sang-Ho Lee)
#===============================================================================================
# 안녕하세요,
# 수강하고 있는 온라인 강의 과제때문에 GSS라는 사이트에서 데이터를 다운받아 R STUDIO의 rmd 파일로 작업을 해야 하는데요.
# load("gss.Rdata") 코드를 입력해서 데이터를 불러오면된다고 되어 있는데 계속 오류메세지가 뜹니다ㅜㅜ
# 오류메세지는 Error in readChar(con, 5L, useBytes = TRUE) : cannot open the connection 라고 나오고요.
# 데이터 파일 불러오는게 간단한 것 같은데 무슨 이유로 계속 안열리는지 모르겠어요 ㅜㅜ
# 무엇을 어떻게 만져야 되는지 알려주시면 정말 정말 감사드리겠습니다!!
# 즉 현재 작업 디렉터리를 기준으로 gss.Rdata을 찾지 못해서 발생된 에러입니다.
# 따라서 "getwd"를 통해 현재 작업 디렉터리를 확인하고 그에 따라 설정해주시면 됩니다.
getwd()
load("INPUT/gss.Rdata")
# R에서 비선형회귀분석 시에 F값이나 P값을 안 주는데,
# 이는 어떻게 구하나요?
dfData = data.frame(
iCal = c(1, 2, 3, 4, 5)
, iVal = c(3, 6, 8, 10, 11)
)
xAxis = dfData$iCal
xAxis2 = xAxis^2
yAxis = dfData$iVal
# 비선형 회귀
oLmFit = lm(yAxis ~ xAxis + xAxis2)
plot(xAxis, yAxis)
lines(xAxis, predict(oLmFit), col = 'red')
# 범례 생성
oSummary = summary(oLmFit)
nRsquare = oSummary$adj.r.squared
nPvalue = oSummary$coefficients[2,4]
nFvalue = oSummary$fstatistic[1]
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]
oLegend[3] = substitute(expression(F-Value == nFvalueList),
list(nFvalueList = format(nFvalue, digits = 2)))[2]
legend("bottomright", legend = oLegend, bty = "n")
# X<-1:100
# sum(X>50)
# 이거 정답이 왜 50인가여
# Sum이니까 51부터 100까지 더해야하는거 아닌가요?
x = 1:100
# TRUE의 총 개수를 의미
sum(x > 50)
# TRUE에 대한 인덱스 추출
vList = which(x > 50)
sum(x[vList], na.rm = TRUE)
# 25번문제 어떻게 푸나요?
f = function(x, a) {
return ((x - a) ^ 2)
}
f(1:2, 3)
# 인터넷에 올라온 웹스크래핑 설명을 본 후 제가 직접 활용해보려 하니 바로 막혀버렸습니다 ㅠㅠ
# 지금 맞닥뜨린 문제는 입력해야 할 url의 소스 코드가 뭔지 모르겠다는 것입니다.
# 크롬 개발자 도구에서 해당 페이지 html의 어떤 태그를 html_nodes()에 넣어야 하고, 이 태그가 어떤 원리 또는 이유에서 선택되는지가 궁금합니다.
# 설명글에서는 그냥 크롬 개발자 도구 스크린샷 찍은 것을 보여준 후 이러이러 하니 "searchCont라는 클래스가 붙은 디비전(divisodn) 아래 링크가 들어 있다"와 같이 간단히 언급하고 넘어가서, 개발자 도구를 봐도 어떤 태그를 선택해야 하는지 모르겠습니다.. 흑
#
# 제가 해본 코드는 다음과 같습니다.
# 오유 시사게시판 게시글 내용을 스크래핑 해보려 했는데 망이네요 ㅜ
# 일단, 첫 번째 페이지 url의 html을 불러온 부분( html <- read_html(urls[1]) )부터 설명글과 달리 저는 xml_document가 아닌 html_document가 뜹니다 ;
# html2, html3 리스트에는 아무것도 들어가지 않은 걸로 뜨고요.
#
# basic_url <- "http://www.todayhumor.co.kr/board/list.php?table=sisa&page="
# urls <- NULL
# for(x in 1:10){
# urls[x] <- paste0(basic_url, x)
# }
#
# html <- read_html(urls[1])
# html2 <- html_nodes(html, '.view list_tr_sisa')
# html3 <- html_nodes(html2, 'a')
#
# 직접 지지고 볶아야 실력이 늘거라 생각하고 덤볐는데 넘 초반부터 막혀버렸네요 허허
# 고수님들 도움 좀 부탁드리겠습니다.
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 = tibble::tibble(
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)
#
# 안녕하세요 기상데이터를 받으려고 하는데
# 대량의 데이터를 다운받으려고 합니다.
# Error in paste0(getwd(), "/", dirname, "/", file_name[count]) :
# object 'file_name' not found
# 이렇게 에러가 나서요 ㅠ
#
# 코딩 확인 부탁드릴게요 ㅜㅜ
# -------------------------------------------------------------------------------------------------------------------
rm(list=ls())
dirname<-"climate_swat"
dir.create(dirname)
for(page_num in 1) {
default_url <- "https://data.kma.go.kr/data/grnd/selectAwsRltmList.do?pgmNo=56&tabNo="
lm_2_url <- paste0(default_url,page_num)
}
lm_2_html <- read_html(lm_2_url)
lm_2_table<-lm_2_html %>%
html_nodes("bbsList table")
lm_2_file_url<-lm_2_table %>%
html_nodes(".title") %>%
html_node("a") %>%
html_attr("href")
for(for_url in lm_2_file_url) {
file_url<-read_html(for_url) %>%
html_node(".float-right") %>%
html_nodes("a") %>%
html_attr("href")
file_name<-read_html(for_url)%>%
html_nodes(".float-right") %>%
html_nodes("a") %>%
html_text()
}
for(count in 1:2) {
destfile_name <-
paste0(getwd(),"/",dirname,"/",file_name[count])
download.file(file_url[count],destfile=destfile_name)
}
# lm은 선형회귀식을 위한 거 아니에요?
# 저는 지금 nls를 이용해서 지수함수(y~a*exp(-b*x))를 피팅하고 있는데,
# nls는 p값과 f값을 제공하지 않아서,
# 그 값을 계산하고 싶은데요.
# 다른 방법이 있나요?
dfData = data.frame(
iCal = c(1, 2, 3, 4, 5)
, iVal = c(3, 6, 8, 10, 11)
)
# 비선형 회귀
oNls = nls(iVal ~ a * exp(-b * iCal), data = dfData, start = list(a = 1, b = 0))
yPred = predict(oNls)
plot(xAxis, yAxis)
lines(xAxis, yPred, col = 'red')
# 범례 생성
oCorTest = cor.test(xAxis, yPred)
nRsquare = oCorTest$estimate
nPvalue = oCorTest$p.value
nFvalue = oCorTest$statistic
oLegend = vector("expression", 2)
oLegend[1] = substitute(expression(R == nRsquareList),
list(nRsquareList = format(nRsquare, digits = 3)))[2]
oLegend[2] = substitute(expression(P-Value == nPvalueList),
list(nPvalueList = format(nPvalue, digits = 2)))[2]
oLegend[3] = substitute(expression(F-Value == nFvalueList),
list(nFvalueList = format(nFvalue, digits = 2)))[2]
legend("bottomright", legend = oLegend, bty = "n")
# 어떠한 과정을 거쳐 4 1 이 나오는지 알고 싶습니다ㅠㅠ x와 a 에 어떤 방식으로 값이 입력되는건가요??
# 안녕하세요? 해솔입니다.
#
# 해당 답변에 대한 소스 코드 및 실행 결과를 보내드리오니 확인 부탁드립니다.
#
# 알고리즘 흐름은 다음과 같습니다.
# f(1, 3) 호출 >> (1 - 3)^2 계산 >> 숫자 4 반환
# f(2, 3) 호출 >> (2 - 3)^2 계산 >> 숫자 1 반환
#
# 최종적으로 4 1로 반환 결과를 확인할 수 있습니다.
#
# 좋은 하루 보내세요.
#
# 해솔 올림.
# 안녕하세요. 혹시 가능하면 또 하나 질문해도 될까요? 그 정보공개서 해당 업체의 링크를 타고 들어가면 대표번호가 있습니다. 그 대표번호만 끌고올 수 잇는 방법이 있을 까요?
# 현재 엑셀탭이 번호,상호, 영업표지, 대표자, 등록번호, 업종 순으로 되어있는데 그 옆에 링크안에 있는 내용인 대표번호가 탭으로 나오게 하고싶습니다 ㅠㅠ 마지막 부탁입니다. 귀찮게 해드려 정말 죄송합니다.
library(rvest)
library(tidyverse)
library(data.table)
library(purrr)
Sys.setlocale("LC_ALL", "English")
fnGetUrlHref = function(sUrl, sXpath) {
xml2::read_html(paste0(sUrl)) %>%
rvest::html_nodes(xpath = paste0(sXpath)) %>%
rvest::html_attr("href")
}
fnGetUrlTable = function(sUrl, sXpath) {
xml2::read_html(paste0(sUrl)) %>%
rvest::html_nodes(xpath = paste0(sXpath)) %>%
rvest::html_table()
}
fnGetUrlText = function(sUrl, sXpath) {
xml2::read_html(sUrl) %>%
rvest::html_nodes(xpath = paste0(sXpath)) %>%
rvest::html_text()%>%
gsub("^\\s+|\\s+$", "", .)
}
sUrl = paste0("https://franchise.ftc.go.kr/user/extra/main/62/firMst/list/jsp/LayOutPage.do?column=&search=&searchFirRegNo=&selUpjong=&selIndus=&srow=100&spage=1")
dfData = fnGetUrlTable(sUrl, '//*[@id="txt"]/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'))
, sPhoneNumber = purrr::map2(sNameLink, '//*[@id="txt"]/div[1]/div/table[1]/tbody/tr[3]/td[3]', fnGetUrlText)
)
dplyr::tbl_df(dfDataL1)
# r프로그래밍 lubridate의 피리어드형
# hours의 결과값을 어떻게 읽어야하나요 왜두줄인지도....
library(lubridate)
# 2개 전달 인자
arrHour = lubridate::hours(c(12, 24))
# 1번째 결과 반환
arrHour[1]
# 2번째 결과 반환
arrHour[2]
# 1개 전달 인자
oHour = lubridate::hours(12)
# 결과 반환
oHour
# flights%>%count(week=floor_date(dep_time,"week"))%>%
# + ggplot(aes(week,n))+geom_line()
# Error in object[[name, exact = TRUE]] : 첨자의 허용 범위를 벗어났습니다
# 어떤 부분이 오류가 난건가요??
library(nycflights13)
library(tidyverse)
make_datetime_100 <- function(year, month, day, time) {
make_datetime(year, month, day, time %/% 100, time %% 100)
}
dfFlights = nycflights13::flights %>%
dplyr::filter(!is.na(dep_time), !is.na(arr_time)) %>%
dplyr::mutate(
dep_time = make_datetime_100(year, month, day, dep_time),
arr_time = make_datetime_100(year, month, day, arr_time),
sched_dep_time = make_datetime_100(year, month, day, sched_dep_time),
sched_arr_time = make_datetime_100(year, month, day, sched_arr_time)
) %>%
dplyr::select(origin, dest, ends_with("delay"), ends_with("time"))
dfFlights %>%
count(week = floor_date(dep_time, "week")) %>%
ggplot(aes(week, n)) +
geom_line()
# R에서 epanet2toolkit 패키지를 불러오려하는데 아래와 같은 오류가 뜹니다..ㅠㅠ 어떻게 해결하죠(as ‘lib’ is unspecified)
install.packages("epanet2toolkit", INSTALL_opts = "--install-tests")
install.packages("epanet2toolkit")
library(devtools)
devtools::install_github("bradleyjeck/epanet2toolkit", force = TRUE)
library(epanet2toolkit)
?epanet2toolkit
ENepanet("Net1.inp", "Net1.rpt")
#
# 아래와 같은 표가 있는데 time series 그래프를 그리고 싶습니다.
# 1) 셀을 합치지 않고 그래프를 그릴 수 있는 방법이 있나요?
# 2) 합쳐야 한다면 어떻게 하나요? make_date를 쓰니까 날짜까지 다 나오더군요.
library(tidyverse)
library(lubridate)
# 임의 데이터 생산
dfData = tibble::tibble(
iYear = c(rep(1982, 12), 1983)
, iMonth = c(seq(1, 12), 1)
, nMeanTemp = rnorm(13) * 20
)
dfDataL1 = dfData %>%
dplyr::mutate(
nXranYm = iYear + ((iMonth - 1) / 12.0)
)
xAxis = dfDataL1$nXranYm
yAxis = dfDataL1$nMeanTemp
plot(xAxis, yAxis)
oLmFit = lm(yAxis ~ xAxis)
abline(oLmFit, col = 'red')
# r 스튜디오에서 코드복사나 코드수정어떻게하나요?
# 코드복사하면 +가 같이 복사되던데 +가 복사되는건 크게 의미있는건아닌가요?
# 코드 복사의 경우 "<Ctrl + c>"을 수정하면 됩니다.
# 코드 수정의 경우 해당 변수에 마우스 더블 클릭을 통해 수정 가능합니다.
# R 프로그램에서 "+" 기호는 줄바꿈을 의미하기 때문에 해당 기호 포함하여 복사해야 합니다.
# x에 rnorm(10)을 넣은건데 function에 인수를 넣으면 어떻게되눈건가요?? function의 인수는 어디에쓰이는건기요??
rescale01 = function(x) {
rng = range(x, na.rm = TRUE)
(x - rng[1]) / (rng[2] - rng[1])
}
# rescale01(c(0, 5, 10))
nRnorm = c(rnorm(10))
nRnorm
rsResult = rescale01(nRnorm)
rsResult
# 안녕하세요. R과 R 스튜디오 모두 최신판으로 설치했고
# 사용하려는데 R 스튜디오와 R 모두에서 객체 생성이 되지 않습니다. 이유가 뭘까요...?
x <- 10
x
x = 9
x
# Rstudio 설치 후 라이브러리 인스톨 시 에러
# C아래 바로 폴더로 설치했구요(환경은 윈10, 64)
# 라이브러리 설치하면서,계속 아래와 같은 메시지가 떠서 타이핑이 불가능합니다.
# 이는 설치 경로에서 한글 파일이 존재하기 때문에 발생되는 문제입니다.
# 따라서 한글을 영어로 변경한 후에 Rstudio 및 R 재 설치를 부탁드립니다.
# r 데이터 병합, 추출 질문입니다.
# 이렇게 원하는 변수를 가지고 하나의 데이터로 합치는 방법이 궁금합니다.
library(tidyverse)
dfData = data.frame(
nTime = c(1:5)
, nNumber = c(5, 6, 2, 7, 1)
)
dplyr::tbl_df(dfData)
dfData2 = data.frame(
nTime = c(1:6)
, nSale = c(20, 15, 30, 40, 60, 50)
)
dplyr::tbl_df(dfData2)
dfDataL1 = dfData %>%
dplyr::full_join(dfData2, by = c("nTime" = "nTime"))
dplyr::tbl_df(dfDataL1)
# R을 사용할 때,
# 데이터에서 날짜가 X1.22.20 이와 같이 chr 형태인 경우에는
# 어떻게 lubridate 패키지를 사용해서 날짜 형태로 바꿀 수 있나요?
library(lubridate)
sDate = "2020-03-09 12:25"
class(sDate)
dtDate = lubridate::ymd_hm(sDate)
dtDate
class(dtDate)
#
library(tidyverse)
mtcars
#
library(xml2)
library(rvest)
library(tidyverse)
Sys.setlocale("LC_ALL", "English")
fnGetUrlText = function(sUrl, sXpath) {
xml2::read_html(paste0(sUrl)) %>%
rvest::html_nodes(xpath = paste0(sXpath)) %>%
rvest::html_text()
}
sUrl = "https://search.naver.com/search.naver?%27,%20%27sm=tab_hty.top&where=nexearch&query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90"
sXpath = '//*[@id="nx_related_keywords"]/dl/dd[1]/ul/li[*]/a'
dfData = fnGetUrlText(sUrl, sXpath)
dfData
#
# 제가 R을 이용해 아래와 같은 코드로 그래프를 그리는데까지 성공했습니다.
# 근데 jiho 데이터는 다수의 변수(plant.length, grow.length 등)가 있는데 한번에 묶어서 일괄적으로 ddply()함수를 적용해서 b 라는 데이터프레임을 만들 수 있나요?
library(tidyverse)
dfData = read.csv("INPUT/jiho.csv", stringsAsFactors = FALSE)
dplyr::tbl_df(dfData)
# 속성 및 날짜에 따른 평균
dfDataL1 = dfData %>%
tidyr::gather(key = "sKey", value = "nVal", c(-Name, -Day, -No)) %>%
dplyr::mutate(dtDate = readr::parse_date(Day, "%Y-%m-%d")) %>%
dplyr::group_by(sKey, dtDate) %>%
dplyr::summarise(nMeanVal = mean(nVal, na.rm = TRUE))
dplyr::tbl_df(dfDataL1)
# 날짜에 따른 평균
dfDataL2 = dfData %>%
tidyr::gather(key = "sKey", value = "nVal", c(-Name, -Day, -No)) %>%
dplyr::mutate(dtDate = readr::parse_date(Day, "%Y-%m-%d")) %>%
dplyr::group_by(dtDate) %>%
dplyr::summarise(nMeanVal = mean(nVal, na.rm = TRUE))
dplyr::tbl_df(dfDataL2)
#
# 제가 이번학기에 R함수에 대해 배우는데 사용중인 변수 목록은 ls()를 통해 볼 수 있는데
# 아래 사진을 보면 ls() 후 x,y,z가 나와야 하는데 왜 저런 문자가 나오는거죠?
# 이해가 안가요..
# 변수 목록 삭제
rm(list = ls())
x = 1:10
y = 11:20
z = 21:30
# 변수 목록 확인
ls()
# 이런 형식이 나오는데 이것을 JSON형식으로 바꾸기 위해
library(rjson)
dfData = data.frame(
source = c("banana", "banana")
, target = c("pitch", "graph")
, type =c ("A", "B")
)
rjson::toJSON(dfData)
# 이 화면에 나오는 tiltle만 크롤링해서 프린트하고 싶은데 에러가 나오네요. 어디를 어떻게 고치면 될까요
library(rvest)
library(tidyverse)
library(xml2)
fnGetUrlText = function(sUrl, sXpath) {
xml2::read_html(paste0(sUrl), encoding = "EUC-KR") %>%
rvest::html_nodes(xpath = paste0(sXpath)) %>%
rvest::html_text()
}
sUrl = "https://finance.naver.com/news/news_list.nhn?%27,%20%27mode=LSS2D§ion_id=101§ion_id2=258"
sXpath = '//*[@id="contentarea_left"]/ul/li[*]/dl/dd[*]/a'
dfData = fnGetUrlText(sUrl, sXpath)
dfData
#
library(dplyr)
dfData = data.frame(
source = c("banana", "banana")
, target = c("pitch", "graph")
, type =c ("A", "B")
)
#
dfData %>%
dplyr::filter(type == "A")
dfData %>%
dplyr::filter(type %in% c("A", "B"))
#
# v1에서 짝수에 대해서만 2를 곱하여 저장하시오.
v1 <- 51:90
nIndex = which(v1 %% 2 == 0)
nVal = v1[nIndex] * 2
nVal
# v1에서 7의 배수들을 제거한 후 v1의 내용을 출력하시오.
v1 <- 51:90
nIndex = which(v1 %% 7 != 0)
nVal = v1[nIndex]
nVal
# x <- c(1, 2, 2, 1, 3, 1) 인데 1은 male로 2는 femal로 3은 unknown으로 할려는데
library(dplyr)
x <- c(1, 2, 2, 1, 3, 1)
dfData = data.frame(x) %>%
dplyr::mutate(
type = case_when(
x == 1 ~ "male"
, x == 2 ~ "femal"
, x == 3 ~ "unknown"
, TRUE ~ "null"
))
dfData
#
library(readxl)
dfData = read_excel("INPUT/sample_data.xlsx", sheet = "생활상태")
dplyr::tbl_df(dfData)
# 1234523456345674567856789가 출력되게하는 방법이 궁금합니다!
nVal = c(
seq(1,5,1)
, seq(2,6,1)
, seq(3,7,1)
, seq(4,8,1)
, seq(5,9,1)
)
nVal
# 1-100의 정수를 차례로 출력하되 3의 배수에서는 숫자 대신 "+" 출력하는 R 코드를 작성하시오.
nVal = seq(1, 100)
for (nRow in nVal) {
if (nRow %% 3 == 0) {
nRow = "+"
}
cat(nRow)
}
# 소수 (prime number)는 1과 자기 자신 외에는 나누어 떨어지지 않는 수를 말한다. 2-1000 사이의 소수를 출력하는 R 코드를 작성하시오.
prime_numbers = 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.")
}
}
prime_numbers(1000)
# for문을 이용하여 구구단 중 9단을 출력하는 R 코드를 작성하시오.
setVal = 9
for (iCount in 1:9) {
for (jCount in 1:9) {
if (iCount == setVal) {
cat(iCount, " * ", jCount, " = ", iCount * jCount, "\n")
}
}
}
# while문을 이용하여 구구단 중 8단을 출력하는 R 코드를 작성하시오.
setVal = 8
iCount = 1
while (iCount <= 9) {
jCount = 1
while (jCount <= 9) {
if (iCount == setVal) {
cat(iCount, " * ", jCount, " = ", iCount * jCount, "\n")
}
jCount = jCount + 1
}
iCount = iCount + 1
}
# R프로그램으로 "1부터 100까지 3의 배수의 합"을 구하는 방법이 궁금합니다.!!
nVal = seq(1, 100)
nIndex = which(nVal %% 3 == 0)
sum(nVal[nIndex], na.rm = TRUE)
# 2020년 달력과 연동되게 평일은 1, 주말은 0으로 표기하여 2진변수를 만들어라
library(lubridate)
library(dplyr)
dtDate = seq.Date(as.Date("2020-01-01"), as.Date("2020-12-31"), "1 day")
dtDate
# nWday에 대해서
# 월-금 : 2 3 4 5 6
# 토-일 : 7 1
data.frame(dtDate) %>%
dplyr::mutate(
sWdayLabel = lubridate::wday(dtDate, label = TRUE)
, nWday = lubridate::wday(dtDate)
, type = case_when(
2 <= nWday & nWday <= 6 ~ 1
, TRUE ~ 0
)
)
# r 프로그래밍 마지막 iv) 에서 z[z %% 0.2 == 0 & z >= 0] 연산하면 왜 0.2, 0.8, 1.4, 2.0가 아니라 numeric(0) 가 뜨는지 잘 모르겠습니다 어디를 어떻게 고치면 될까요
library(numbers)
z = c(-1.0, -0.7, -0.4, -0.1, 0.2, 0.5, 0.8, 1.1, 1.4, 1.7, 2.0, -0.7, -0.7, -0.4, -0.4, -0.4, -0.4, -0.4, -0.1, -0.1, -0.1, -0.1, 5.5, -3.8)
nIndex = which(z %% 0.2 == 0 & z >= 0)
mod(c(-5:5), 5)
mod(abs(z), 0.2)
-1.0 / 0.2
z[nIndex]
# 제가 문제
# y=sin(3x)/(3x) x의 범위는 [-6,6]
# x=seq(from=-6,to=6,by=0.01)
# y=sin (3*x)/(3*x)
# plot(x,y,type="l")
# 짯는데
# 이렇게나왔거든여
# 근데 여기서 13개 점밖에 되지않다고하는데 이게 무슨뜻인가요?
x = seq(from = -6, to = 6, by = 1)
y = sin(3 * x) / (3 * x)
plot(x, y, type = "p")
points(x, y, type = "l")
# 사진에 나온 프로그램을 다운받아야되는데 뭐가 뭔지 모르겠는데 알려주세요ㅠㅠ
install.packages(c("readxl", "dply", "rgdal", "ggplot2", "ggmap", "rgeos", "raster", "rjava", "RJDBC", "rvest"))
# 1에서 100까지의 7의 배수의 합을 어떻게 구하나요? 7의 배수 나열하는 방법은 알겠는데 합을 ss로 지정한 그 다음에 어떻게 프로그래밍을 해야할 지 모르겠어요.
nVal = seq(1, 100)
nIndex = which(nVal %% 7 == 0)
nVal[nIndex]
sum(nVal[nIndex], na.rm = TRUE)
# 1)에서 만든 행렬을 ad 변수에 저장하고 제일 오른쪽에 매출 데이터(변수명: sales)를 추가하려고 한다. 매출은 1200, 1500, 2100 이다. R에서 cbind()/rbind()를 이용하여ad에 sales를 추가하고 다시ad에 저장 하세요.
ad = data.frame(
facebook = c(900, 1200, 1900)
, instagram = c(500, 800, 1800)
, blog = c(400, 600, 700)
)
ad
ad = cbind(ad, data.frame(sales = c(1200, 1500, 2100)))
ad
#
library(EnvStats)
EnvStats::cdfPlot(param.list = list(mean = 5, sd = 4), main = "")
legend("topleft", legend = c("N(5, 4)"),
col = c("black"), lwd = 3 * par("cex"))
title("CDF Plots for Normal Distributions")
#
# dfData = data.frame(
# Age = c(22, 25)
# , Name = c("James", "Mathew")
# , Gender = c("M", "M")
# )
# R 프로그램에 prophet 설치하면 cran 미러를 선택하라 해서 cloud, seoul, ulsan 다 해봤는데 자꾸 에러가 뜨네요 도와주세요 정말 하나도 몰라요..
install.packages("prophet")
library(prophet)
# 2)번 x 크기순으로 20개씩 평균 구하는거까진 했는데요 그 이후 그래프를 어떻게 그려야할지 모르겠네요..x와 y의 길이가 다르다고 오류뜨네요. 어떤식으로 코드를 짜야할까요?
# 3)번도 접근방법을 모르겠네요..
library(dplyr)
dfData = data.frame(
x = sample(100) / 100.0
, y = sample(100)
)
dfData %>%
dplyr::arrange(x) %>%
dplyr::mutate(type = x /20
)
plot(dfData$x, dfData$y)
# 이렇게 떠서 재설치도 몇번해봤는데 안됩니다ㅠ 어떻게 해아하나요
# 대부분의 경우 이전 버전의 Windows 7을 사용할 때 발생된 오류입니다.
# 따라서 일반적으로 OS 업데이트를 설치하는 것이 추천드리나 그렇지 않은 경우 해당 OS에 맞는 Rstudio 사용하시면 됩니다 (링크 참조).
# https://rstudio.com/products/rstudio/older-versions/
# (예제 17) x <- c(1,2,3,4,5)으로 점그래프(산점도)를 3개 그리세요.
# 1) pch=18을 붉은 색(col="red")과 크기(cex=2)를 2로 하는 산점도
# 2) 문자 pch=15:19, 5개의 칼라 col= 1:5, 크기(cex=2)를 2로 하는 산점도
# 3) 문자 pch=15:19, 2개의 칼라 col= 1:2, 크기(cex=2)를 2로 하는 산점도(리사이클 룰(recycling rule): 벡터의 길이가 짧은 쪽은 반복해서 사용하는 규칙
x <- c(1,2,3,4,5)
plot(x, pch = 18, col = "red", cex = 2)
plot(x, pch = 15:19, col = 1:5, cex = 2)
plot(x, pch = 1:2, col = 1:5, cex = 2)
# CAD. DEVILLE A 11385 14 3 3 4.0 31.5 20 4330 221 44 425 2.28
# CAD. ELDORADO A 14500 14 2 2 3.5 30.0 16 3900 204 43 350 2.19
# CAD. SEVILLE A 15906 21 3 3 3.0 30.0 13 4290 204 45 350 2.24
# CHEV. CHEVETTE A 3299 29 3 3 2.5 26.0 9 2110 163 34 231 2.93
# CHEV. IMPALA A 5705 16 4 4 4.0 29.5 20 3690 212 43 250 2.56
# 원데이터가 다음과 같이 되어있을 때
# 맨 앞에 문자열 변수를 공백없이 만들려고 앞의 세글자만 가져오려고 합니다.
# 어떻게 코드를 입력하면 될까요? 제발 도와주세요
library(stringr)
dfDtata = data.frame(
sType = c("CAD. DEVILLE A 11385 14 3 3 4.0 31.5 20 4330 221 44 425 2.28"
, "CAD. ELDORADO A 14500 14 2 2 3.5 30.0 16 3900 204 43 350 2.19"
)
)
stringr::str_sub(dfDtata$sType, 1, 3)
# R을 거의 사용해 본 적 없는 초보자를 대상으로
# 몬티홀 문제 시뮬레이션 R 코드와 상세한 설명 부탁드려요.
# 내공 400 겁니다.
######################################## 모집단 및 표본집단의 평균/분산/표준편차 비교 ##############################
## - 중심극한정리 : 동일한 확률분포를 가진 독립확률 변수 n개의 평균값은 n이 클수록 정규분포에 가까워짐
## - 표본집단을 통하여 모집단의 정보를 알고싶음
## - 즉 표본평균집단의 평균/분산/표준편차를 이용하여 모집단의 평균/분산/표준편차를 유추할 수 있음
## -- 모집단의 평균 = 표본평균집단의 평균
## -- 모집단의 분산/자료수 = 표본평균집단의 분산
## -- 모집단의 표준편차/루트(자료수) = 표본평균집단의 표준편차
## -> 표본 개수가 많을수록 모집단을 더 잘 유추할 수 있음 -> 정규분포에 가까워짐
####################################################################################################################
set.seed(1) # 난수로 생성된 수열을 고정시킴
X = runif(10000, min=0, max=1) # 난수 생성 (모집단 생성)
hist(X) # 모집단의 빈도분포
cat(mean(X), var(X), sd(X), "\n") # 모집단의 평균/분산/표준편차
################################################### 표본평균집단에 대해서 ###########################################################
for (i in c(10, 50, 100, 250)) {
DO = 100000 # Number of repetition
N = i # Number of sample
# N = 30
## 비복원 추출(무작위 정렬) : 한번 뽑은 것을 다시 뽑을 수 없는 추출
Sort = lapply(1:DO, function(i) sample(X, N, replace=F))
Sort_mean <- mapply(mean, Sort)
## FIG
# nf <- layout(matrix(c(1,1),1,byrow=T), c(1,1), c(1,1)) ; layout.show(nf) ; par(mar=c(5,5,5,5)) ; par(cex=1.0)
hist(Sort_mean, breaks=50, xlab="Sample Distribution Mean", xlim=c(0.3, 0.7), col = "light grey", border = "grey", xaxs="i", yaxs="i",
main=paste0("Central Limit Theorem : number of sample = ", N, ", number of repetition = ", sprintf("%d", DO)))
XX1 = mean(Sort_mean)+sd(Sort_mean)
XX2 = mean(Sort_mean)-sd(Sort_mean)
XX3 = mean(Sort_mean)+2*sd(Sort_mean)
XX4 = mean(Sort_mean)-2*sd(Sort_mean)
XX5 = mean(Sort_mean)+3*sd(Sort_mean)
XX6 = mean(Sort_mean)-3*sd(Sort_mean)
YY = max(hist(Sort_mean, breaks=50, plot=F)$counts)
lines( c(mean(Sort_mean), mean(Sort_mean)), c(0, YY), lty=1, col=4) ; text(mean(Sort_mean), YY/2, "Mean")
lines( c(XX1, XX1), c(0, YY), lty=1, col=2 ) ; text( XX1, YY/2, "+1σ")
lines( c(XX2, XX2), c(0, YY), lty=1, col=2 ) ; text( XX2, YY/2, "-1σ")
lines( c(XX3, XX3), c(0, YY), lty=1, col=2 ) ; text( XX3, YY/2, "+2σ")
lines( c(XX4, XX4), c(0, YY), lty=1, col=2 ) ; text( XX4, YY/2, "-2σ")
lines( c(XX5, XX5), c(0, YY), lty=1, col=2 ) ; text( XX5, YY/2, "+3σ")
lines( c(XX6, XX6), c(0, YY), lty=1, col=2 ) ; text( XX6, YY/2, "-3σ")
lines( c(max(Sort_mean), max(Sort_mean)), c(0, YY), lty=1, col=3 ) ; text(max(Sort_mean), YY/2, "Max")
lines( c(min(Sort_mean), min(Sort_mean)), c(0, YY), lty=1, col=3 ) ; text(min(Sort_mean), YY/2, "Min")
}
# r언어 데이터프레임 airquality
# 여기서 1,2가 아닌 3월 1일, 7월 7일 형태로 출력하려면 어떻게 해야 하나요?
library(dplyr)
air = data.frame(airquality)
air %>%
dplyr::filter(
(Month == 3 & Day == 1) | (Month == 7 & Day == 7)
)
# 과제 중에 스크립트를 논리형으로 변환하여 z_logic에 저장하라고 하는데 무슨 말인가요?
nVal = c(94, NA)
z_logic = as.logical(nVal)
z_logic
# r studio를 이용해서 정적분과 함수의 극한값 구하는 법 좀 알려주세요ㅠㅠㅠㅠ
# 아님 잘 설명해주는 유튜브 영상같은 게 있으시다면 추천 부탁드립니다
# 정적분
fn = function(x) {x^2 + 4*x + 1}
integrate(fn, lower = 0, upper = 3)
# 그 밑에부분을 다 실행시켜보면 하나같이
# Error in empty(.data) : 객체 'tips'를 찾을 수 없습니다
# 이런 오류가 계속 뜹니다ㅠ
# 어디가 잘못된걸까요?
# 설치 시에 발생된 문제로 판단됩니다.
# plyr 라이브러리 삭제
unlink(paste0(Sys.getenv('R_LIBS_USER'), '/plyr'), recursive=TRUE)
# 재 설치
install.packages('plyr')
# d<-data.frame(x=1:10,fac=fac,z=10:20)Error in data.frame(x = 1:10, fac = fac, z = 10:20) : arguments imply differing number of rows: 10, 11
# 이게 대체 무슨 뜻인가요ㅜ
# 오류가 자꾸 떠요
fac = 30:40
d = data.frame(
x = c(1:11)
, fac=c(fac)
, z = c(10:20)
)
d
# x<-1:100
# sum(x>50)
# 이렇게 출력해봤는데
# 50이라는 답이 나왔습니다.
# 그런데 왜 이렇게 나오는지 이해가 안가서 질문합니다!
# 자세히 설명부탁드려요!
x <- 1:100
nIndex = which(x > 50)
nIndex
# 객체들의 합
sum(x[nIndex], na.rm = TRUE)
# R studio 한글을 써서 저장시킨뒤 다시 키면 한글이 모두 '?'로 표시되어 있습니다 .
# utf-8로 설정되어있구요.. 어떤게 문제일까요
# 이 경우 EUC-KR로 저장한 소스 코드를 UTF-8로 변환 시 발생되는 문제입니다.
# 따라서 EUC-KR로 설정한 후 소스 코드를 복사 후 UTF-8로 다시 붙여넣기해야 합니다.
# 다음의 문제를해결하기 위한 R 코드를 작성하시오 (which 함수 사용)
library(dplyr)
# iris 데이터셋에서 꽃잎의 길이 (Petal.length)가 가장 큰 관측값 (행)의 내용을 보이시오.
iris %>%
dplyr::filter(Petal.Length == max(Petal.Length, na.rm = TRUE))
# iris 데이터셋에서 꽃잎의 폭 (Petal.Width)이 0.3~0.4 사이인 관측값 (행)들의 내용을 보이시오.
iris %>%
dplyr::filter(between(Petal.Width, 0.3, 0.4))
# v1에서 짝수에 대해서만 2를 곱하여 저장하시오.
v1 <- 51:90
nIndex = which(v1 %% 2 == 0)
nVal = v1[nIndex] * 2
nVal
# v1에서 7의 배수들을 제거한 후 v1의 내용을 출력하시오.
v1 <- 51:90
nIndex = which(v1 %% 7 != 0)
nVal = v1[nIndex]
nVal
# 다음은 영업 사원들의 판촉 전화 건수와 판매 건수이다.
dfData = data.frame(
nKey = c(18, 40, 20, 30, 10, 10, 20, 21, 24, 30)
, nVal = c(42, 66, 42, 54, 30, 30, 46, 49, 43, 63)
)
# R을 이용하여 판촉 전화 건수의 평균과 분산을 구하는 프로그램을 작성하고 프로그램과 결과를 캡쳐하여라.
mean(dfData$nKey, na.rm = TRUE)
var(dfData$nKey, na.rm = TRUE)
# R을 이용하여 판촉 전화 건수의 히스토그램을 그리는 프로그램을 작성하고 프로그램과 결과를 캡쳐하여라.
hist(dfData$nKey)
# R을 이용하여 산점도를 그리고 상관계수를 구하는 프로그램을 작성하고 프로그램과 결과를 캡쳐하여라.
plot(dfData$nKey, dfData$nVal)
cor(dfData$nKey, dfData$nVal)
# r프로그래밍 오류 질문이요 ㅠㅠ
# 이거 왜 오류가 뜨나요 ㅠㅠ 저 파일을 불러오기 했는데 자꾸 저렇게 뜨고 다른게 안되요 ㅠㅠ
data = read.csv(file = "INPUT/csv exam.txt", sep = " ", header = FALSE)
data
#
library("KoNLP")
# 1. 1에서 10000 사의의 수에서 짝수만을 가지고 벡터 객체 생성하시오. 그리고 벡터 객체의 모드를 확인하시오
val = 1:10000
index = which(val %% 2 == 0)
val[index]
# 2. (4.2, 6.3, 5.1, 7.2, 10.1, 9.9, 4.0, 15.5)를 숫자형 벡터 객체 만드시오.
# 그리고 이 숫자형 벡터 객체를 사용하여 세번째 수와 여섯번째 수를 결측치로 바꾸시오. 그리고 벡터 객체의 모드를 확인하시오(단 R에서의 결측치 처리는 NA로 해야 합니다. 예를 들어 y<-NA 로 하면 y스칼라가 결측치입니다.
val2 = c(4.2, 6.3, 5.1, 7.2, 10.1, 9.9, 4.0, 15.5)
val2[3] = NA
val2[6] = NA
val2
# 예를 들어서, 초단위로 부하율 값이 나타내는 CSV파일이 있는데
# 이것을 초단위의 데이터 평균내서 1분단위로 나타내는 데이터 값을 새로 추가하고싶을때는 어떻게 코딩을 해야하나요 ?
library(dplyr)
dfData = data.frame(
Time = c("45:55.4", "45:56.4", "46:57.5", "46:57.8", "47:59.3")
, Load = c(24, 65, 95, 65, 95)
)
dfDataL1 = dfData %>%
dplyr::mutate(
dtTime = readr::parse_time(as.character(Time), format = "%M:%OS")
, sMinute = lubridate::minute(dtTime)
, sSec = lubridate::second(dtTime)
)
dplyr::tbl_df(dfDataL1)
dfDataL2 = dfDataL1 %>%
dplyr::group_by(sMinute) %>%
dplyr::summarise(nMeanLoad = mean(Load, na.rm = TRUE))
dplyr::tbl_df(dfDataL2)
# 10명의 몸무게를 저장한 벡터가 다음과 같을 때 질문을 해결하기 위한 R코드를 작성하시오.
weight <- c(69, 50, 55, 71, 89, 64, 59, 70, 71, 100)
# (1) 몸무게가 가장 큰 값은 몇 번째에 있나?
which(weight == max(weight, na.rm = TRUE))
# (2) 몸무게가 가장 작은 값은 몇 번째에 있나?
which(weight == min(weight, na.rm = TRUE))
# (3) 몸무게가 61에서 69사이인 값들은 몇 번째에 있나?
which(61 <= weight & weight <= 69)
# (4) 몸무게가 60 이하인 값들만 추출하여 weight.2에 저장하고 내용을 보이시오.
weight.2 = which(weight <= 60)
weight.2
# R csv불러올때 한글 깨지는데 어떻게 해야할까요? 한글을 영어로 불르면 잘 불러와지는데 한글로 하면 깨져서 와요ㅠㅠㅠㅠ
data = read.csv("INPUT/출산율.csv", encoding = "utf-8")
data = read.csv("INPUT/출산율.csv", encoding = "cp949")
data = read.csv("INPUT/출산율.csv", encoding = "euc-kr")
# R데이터 y=2x^+5x+10에 대해 x가 각각 6,8,10일때 y의 값을 각각 구한다.'
# 이문제인데 자꾸 오류가 나요 ㅠ ㅠ
x = c(6, 8, 10)
y = (x^2) + (5 * x) + 10
y
#
library(evir)
data(danish)
evir::records(danish)
#
data = scan("INPUT/csv exam.txt", what = "character")
data
dataL1 = read.csv(file = "INPUT/csv exam.txt", sep = " ", header = TRUE)
dataL1
# 그래서 이것을 다시 받아서 출력하려고 2번째 사진같이 입력하여 출력하였는데 보시는것처럼 '유효하지 않은 멀티바이트 문자열 3입니다' 라는 말과 함께 출력이 되질 않아 계속 시도해봐도 도저히 해결을 못하겠어서 질문드립니다..ㅠㅠ
data = read.csv(file = "INPUT/csv exam.txt", sep = " ", header = TRUE)
data
# 압축 파일 'Rstat.zip'의 압축을 풀었는데 R에서 R stat라고 불리는 패키지가 없다고 해서 질문드립니다.
# 패키지를 설치하려면 어떻게 해야 하는 건가요?
# 빠르게 답변해주시면 감사하겠습니다.
# library(stats)
# stats::
# (1:10)^c(1,2)를 계산하면
# [1] 1 4 3 16 5 36 7 64 9 100이 나오는데 어떤 원리로 계산된건가요?
(1:10)^c(1,2)
# 좌측 1 ^ 우측 1 = 1
# 좌측 2 ^ 우측 2 = 4
# 좌측 3 ^ 우측 1 = 3
# 좌측 4 ^ 우측 2 = 16
# 좌측 5 ^ 우측 1 = 5
# 좌측 6 ^ 우측 2 = 36
# 좌측 7 ^ 우측 1 = 7
# 좌측 8 ^ 우측 2 = 64
# 좌측 9 ^ 우측 1 = 9
# 좌측 10 ^ 우측 2 = 100
# 난수 구할 때 U(-3.3) 이랑 DE(0.1) 구하려면 어떻게 쳐야 하나요ㅠㅠ
iNumber = 1000000
# 0-1 사이 난수 구하기
nVal = runif(iNumber)
hist(nVal)
# 정규분포에서 난수 생성
nVal2 = rnorm(n = iNumber, mean = 0, sd = 1)
hist(nVal2)
# R에서 제공하는 swiss 데이터셋은 스위스 47개 주의 경제 자료를 포함하고 있다. 이 데이터셋에 대해서 다음 문제를 해결하기 위한 코드를 작성하시오.
library(dplyr)
dfData = swiss
# (1) 데이터셋의 요약 정보를 보이시오.
summary(dfData)
# (2) 남성의 농업인 비율(Agriculture)이 가장 높은 주를 보이시오.
dfData %>%
tibble::rownames_to_column() %>%
dplyr::filter(Agriculture == max(Agriculture, na.rm = TRUE))
# (3) 남성의 농업인 비율(Agriculture)을 내림차순으로 정렬하여 주의 이름과 함께 보이시오.
dfData %>%
tibble::rownames_to_column() %>%
dplyr::arrange(desc(Agriculture))
# (4) 카톨릭 신자의 비율(Catholic)이 80% 이상인 주들의 남성의 농업인 비율(Agriculture)을 보이시오.
dfData %>%
tibble::rownames_to_column() %>%
dplyr::filter(Catholic >= 80)
# [R]markdown을 word로 생성하는데 오류가 뜨네요ㅠㅠ
# output file: -2.knit.mdUnknown option -2.Unknown option -..Unknown option -u.Try pandoc.exe --help for more information.에러: pandoc document conversion failed with error 2실행이 정지되었습니다
# 혹시 어떻게 해결해야하는지 아시나요??ㅠㅠ
library(rmarkdown)
render("input.Rmd", word_document())
# specify an option for syntax highlighting
render("input.Rmd", word_document(highlight = "zenburn"))
# 다음 문제를 해결하기 위한 R 코드를 작성하시오. ( which( ) 함수 사용 ) (4 points)
# (1) iris 데이터셋에서 꽃잎의 길이(Petal.Length)가 가장 큰 관측값(행)의 내용을 보이시오.
index = which(iris$Petal.Length == max(iris$Petal.Length, na.rm = TRUE))
iris[index, ]
# (2) iris 데이터셋에서 꽃잎의 폭(Petal.Width)이 0.3~0.4 사이인 관측값들의 내용을 보이시오.
index = which(0.3 <= iris$Petal.Width & iris$Petal.Width <= 0.4)
iris[index, ]
# 4번문제 어떻게 푸나요? ㅠㅠ 제발 알려주세요
x = c(6, 8, 10)
y = (2 * (x^2)) + (5 * x) + 10
y
# 1에서 50 사이의 정수 중에서 3이나 5의 배수를 순서대로 모두 찾아 v3벡터를 만드시오.
var = 1:50
index = which((var %% 3 == 0) | (var %% 5 == 0))
v3 = var[index]
v3
# 0-5
# 5-10
# 10-15
# ~~
# 45-55
# 이렇게 10개의 표가 5의 간격으로 있을때 이거를 R프로그램을 이용해서 도수분포표를 만드는 명령어 좀 알려주세요..
library(tidyverse)
data = read.csv(file = "INPUT/zipIncome.csv")
var = data %>%
select(MeanEducation, MeanHouseholdIncome) #pick the variable
# set up cut-off values
breaks = seq(0, 50, 5)
# specify interval/bin labels
tags = paste0("[", seq(0, 45, 5), "-", seq(5, 50, 5), ")")
# bucketing values into bins
group_tags = cut(var$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()
#
# 1.R 스튜디오 에서 log(1:5) 함수 입력하면
# 밑이 e? 2? 인 함수 값으로 계산 되는건가요 ????
log(1:5)
# 2.exp(1:5) <<< 이거 뭔지 잘 모르겠어요 자세히 설명좀요 , 지수함수 인가요
exp(1:5)
# 2.718282 ^ (1:5)
# R언어 소스코드 및 실행결과좀 부탁드려요 처음이라 잘 모르겠네요..ㅜ
# 5) 1부터 100사이에 있는 정수를 생성하고 그 결과를 x에 할당하라.
x = 1:100
x
# 6) 5)에서 생성한 백터 x의 원소 수를 구하라.
length(x)
# 7) 5)에서 생성한 백터 x의 원소들의 합, 평균, 표준편차를 구하고, 그 결과를
# x_sum, x_mean, x_std변수에 저장하라.(sum(), mean(), sd() 함수를 이용하라.)
x_sum = sum(x, na.rm = TRUE)
x_mean = mean(x, na.rm = TRUE)
x_std = sd(x, na.rm = TRUE)
x_sum
x_mean
x_std
# 벡터의 크기가 9이고 벡터의 원소 중 처음 다섯 개는 1부터 10까지 홀수 값, 그 다음 네 개는 8부터 1까지 짝수 값을 갖는 벡터를 생성하는 법좀 가르쳐쥬세요 r프로그래밍 ㅠㅠ
# 벡터의 모양은 1 3 5 7 9 8 6 4 2 가 되도록!
evenVar = 1:8
oddVar = 1:10
evenIndex = which(evenVar %% 2 == 0)
oddIndex = which(oddVar %% 2 == 1)
val = c(oddVar[oddIndex], rev(evenVar[evenIndex]))
val
# Rstudio에서 C:/R/csv1.csv R폴더 안의 csv1.csv파일 여는 방법좀 알려주세요ㅠㅠ 사진처럼 하니까 안돼요
setwd("E:/02. 블로그/지식iN")
data = read.csv("INPUT/출산율.csv")
data
# 실행이 된 거 아닌가요?근데 왜 함수를 찾을 수 없다고 뜨는건가요?
library(readxl)
readxl::read_excel
# factor를 이제 막 배우고 있는데요
# 1을 하나, 2를 둘, 3을 셋 으로 바꾸려고 하는데
# 왜 안먹히는지 잘 모르겠어요 ㅠㅠㅠㅠ 뭔가요 제발알려주세요
library(plyr)
a = c(1, 2, 3, 3, 2, 1)
faData = factor(data)
rsData = plyr::mapvalues(faData, from = c(1:3), c("하나", "둘", "셋"))
rsData
table(rsData)
# csv 파일을 불러와서 하는데 행의 이름이 한글로 되어 있습니다.
# 그래서 하나하나 이렇게 해보는데 어떤 경우에는 저런 메시지가 뜨고 어떤 경우는 그냥 정상으로 넘어갑니다.
# 이 메시지의 의미는 무엇이며 왜 이런것이 뜨는지 알고 싶습니다.
data = read.csv("INPUT/출산율.csv", encoding = "utf-8")
data = read.csv("INPUT/출산율.csv", encoding = "cp949")
data = read.csv("INPUT/출산율.csv", encoding = "euc-kr")
# 2. 1의 조건에서 sepal.width와 sepal.length의 중앙값과 species의 종류별 개수를 구하시오.
# 1번은 됐는데 2번이 안 되네요ㅜㅜ 2번할때 어떤 함수(median, subset?)와 수식, 구하는 법을 알려주세요
median(iris$Sepal.Width, na.rm = TRUE)
median(iris$Sepal.Length, na.rm = TRUE)
table(iris$Species)
#
# R에서 while이랑 repeat 각각 중첩하여 사용해서 이 삼각형 나오게 하고 싶은데 어떻게 해야하나요ㅜ C언어나 자바, 파이썬으로 하는 건 많이 나오는데 R로 어떻게 하는지는 안나오네요ㅜㅜㅜㅜ
# R 고수님들 부탁드립니다!
i = 1
number = 10
while (i < number) {
cat(rep("*", times = number - i), "\n")
i = i + 1
}
# 1.PC에 R 프로그램을 설치하고 아래 계산들을 한 후 R consol화면을 캡쳐하여 한글파일로 제출하라.
# 1+2*3+4*5+6을 계산하라
1+2*3+4*5+6
# (1+2)*3+4*(5+6)을 계산하라
(1+2)*3+4*(5+6)
# ((1+2*3)+4)*5+6을 계산하라
((1+2*3)+4)*5+6
# 2.벡터의 크기가 9이다. 벡터의 원소 중 처음 다섯 개는 1부터 10까지 홀수 값, 그 다음 네 개는 8부터 1까지 짝수 값을 갖는 벡터를 생성하라.
# 벡터의 모양은 1 3 5 7 9 8 6 4 2 가 된다.
evenVar = 1:8
oddVar = 1:10
evenIndex = which(evenVar %% 2 == 0)
oddIndex = which(oddVar %% 2 == 1)
val = c(oddVar[oddIndex], rev(evenVar[evenIndex]))
val
# 문제를 어떻게 푸는지 모르겠어요ㅠ
# 1. x는 1부터 100까지의 수 중 3의 배수만 포함하고 y는 1부터 100까지의 수 중 5의 배수만 포함하는 벡터를 만들어라.
var = 1:100
index = which((var %% 3 == 0) | (var %% 5 == 0))
var[index]
# 2. x와 y의 교집합을 구하고, 해당 교집합에 포함된 수를 모두 합한 값을 구하여라.
index = which((var %% 3 == 0) & (var %% 5 == 0))
var[index]
sum(var[index], na.rm = TRUE)
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'자기계발 > 지식iN·문의사항' 카테고리의 다른 글
[문의사항] ERA-Interim 문의 (0) | 2021.01.27 |
---|---|
[지식iN] R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 (4) : 2020년 06월 07일 (4) | 2020.06.07 |
[지식iN] R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 (3) : 2020년 04월 30일 (0) | 2020.04.30 |
[지식iN] R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 : 2020년 02월 21일 (0) | 2020.02.21 |
[지식iN] R 프로그래밍 문의 (0) | 2019.09.26 |
최근댓글