Content

Board ID 671
Writer heojk
Write Date 2017-05-30 16:33:34
Subject R 2일차
Content iris install.packages("data.table") library(data.table) data <- as.data.table(iris) str(data) setkey(data, Species) key(data) data["setosa", ] data$Species <- as.character(data$Species) str(data) data[2] #2번째 행 data[ , 2] data[2, 2] data[2, 2, with=FALSE] ?data.table data[ , 2, with=FALSE] #2번째 열 data[ , Sepal.Length] #벡터로 반환 data[ , list(Sepal.Length)] #data.table data[ 2:3, sum(Sepal.Length)] #2~3행의 Sepal.Length의 합 #iris 데이터에서 종별 꽃잎(Petal)의 길이 평균과 표준편차를 출력하세요. data[ , list(avg=mean(Petal.Length), sd=sd(Petal.Length)), by=Species] tapply(iris$Petal.Length, iris$Species, mean) tapply(iris$Petal.Length, iris$Species, sd) DF <- data.frame(x=runif(260000), y=rep(LETTERS, each=10000)) str(DF) DT[1,1] DT <- as.data.table(DF) str(DT) DT[1,1, with=FALSE] DT <- data.table(x=runif(260000), y=rep(LETTERS, each=10000)) str(DT) DT[1,1] DT[1,1, with=FALSE] ?data.table system.time( { for(i in 1:1000) { DT[i, V1:=i] } } ) ?rnorm DT1 <- data.table(x=runif(260000), y=rep(LETTERS, each=10000)) DT2 <- data.table(y=c("A", "B", "C"), z=c("a", "b", "c")) setkey(DT1, y) setkey(DT2, y) DT1[DT2, ] DT2[DT1, ] #더 나은 반복문 foreach( ..., .combine=rbind ) %do% expression #병렬 처리... install.packages("doParallel") library(doParallel) library(plyr) registerDoParallel(cores=4) bigData <- data.frame(value=runif(NROW(LETTERS) * 2000000), group=rep(LETTERS, 2000000)) system.time(dlply(bigData, .(group), function(x) {mean(x$value)}, .parallel=TRUE)) system.time(dlply(bigData, .(group), function(x) {mean(x$value)}, .parallel=FALSE)) x <- seq_len(20) wait <- function(i) Sys.sleep(0.3) system.time(llply(x, wait)) # 6 sec system.time(llply(x, wait, .parallel = TRUE)) # 3.53 sec #출력할 수 있는 방법 #수식 #(변수 <- 수식) #print #sprintf("%d%s%f", 값1, 값2, ..) #cat(변수, ...) #공백으로 연결 #browser() : 프롬프트를 생성 #paste(..., sep=",") #paste0(...) #구분자가 공백