내용 |
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(...) #구분자가 공백
|