내용 |
데이터 테이블 다루기
install.packages("data.table")
library(data.table)
?fread
install.packages("curl")
flights <- fread("https://raw.githubusercontent.com/wiki/arunsrinivasan/flights/NYCflights14/flights14.csv")
head(flights)
class(flights)
iris.table <- data.table(iris)
class(iris.table)
iris.table[Species=="setosa"]
iris.table[1:50]
iris.table[order(Sepal.Length)]
iris.table[, Sepal.Length]
class(iris.table[, Sepal.Length])
class(iris.table[, list(Sepal.Length)])
iris.table[, list(Sepal.Length, Sepal.Width)]
iris.table[, .(Sepal.Length, Sepal.Width)]
iris.table[, .(SL=Sepal.Length, SW=Sepal.Width)]
iris.table[Sepal.Length>=6,]
iris.table[,sum(Sepal.Length>=6)]
iris.table[Sepal.Length>=6, length(Species)]
iris[, c("Sepal.Length", "Sepal.Width", "Species")]
iris.table[, c("Sepal.Length", "Sepal.Width", "Species")]
iris.table[, .(Sepal.Length, Sepal.Width, Species)]
head(iris)
iris.table[, 1:4]
iris.table[, Sepal.Length:Petal.Width]
iris.table[, -(Sepal.Length:Petal.Width)]
iris.table[, .(Sepal.Length, Petal.Width)]
iris.table[ , length(Species)]
iris.table[ , .(.N)] # 데이터 테이블
iris.table[ , .N] # 벡터
#종별 행의 수를 출력
iris.table[ , .N, by=.(Species)]
iris.table[ , .(.N), by=.(Species)]
iris.table[ , .N, by="Species" ]
iris.table[ , .N, by=Species ]
# Sepal.Length가 5보다 큰 데이터의 수를 종별로 출력하세요.
iris.table[Sepal.Length>5, .N, by=Species]
# Sepal.Length가 5보다 큰 데이터에서 Petal.Length와 Petal.Width의 평균
# 그리고 데이터의 수를 종별로 출력하세요.
iris.table[Sepal.Length>5, .(PL=mean(Petal.Length), PW=mean(Petal.Width), .N),
by=Species]
iris.table[Sepal.Length>5, .(PL=mean(Petal.Length), PW=mean(Petal.Width), .N),
keyby=.(Species)]
iris.table[ c(51:100,101:150,1:50),
][, .N, by=Species]
iris.table[ c(51:100,101:150,1:50),
][, .N, keyby=Species]
# 종별 평균을 출력(꽃잎 길이, 너비, 꽃받침 길, 너비)
iris.table[ , .SD]
iris.table[ , .SD, by=Species]
iris.table[ , print(.SD), by=Species]
iris.table[ , .(mean(Petal.Length), mean(Petal.Width),
mean(Sepal.Length), mean(Sepal.Width)),
by=Species]
iris.table[ , lapply(.SD, mean), by=Species]
#꽃잎의 길이와 너비 평균을 계산
iris.table[ , lapply(.SD, mean), by=Species,
.SDcols=c("Petal.Length", "Petal.Width")]
iris.table[ , head(.SD, 2), by=Species]
# 종별 데이터 처음 다섯개를 출력하세요.
iris.table[ , head(.SD, 5), by=Species]
# 종별 데이터 처음 다섯개를 아래의 형식으로 출력하세요.
#setosa 5.1 4.9 4.7 4.6 ...
iris.table[ , .(val=list(.SD)), by=Species]
iris.table[ , .(val=list(c(.SD))), by=Species]
iris.table[ , .(val=list(c(Sepal.Length, Sepal.Width))),
by=Species]
# 종별 꽃잎 길이 데이터 처음 다섯개를 아래 형식으로 출력하세요.
# Species val
#1: setosa 5.1,4.9,4.7,4.6,5.0
#2: versicolor 7.0,6.4,6.9,5.5,6.5
#3: virginica 6.3,5.8,7.1,6.3,6.5
iris.table[ , .(val=list(head(Sepal.Length,5))),
by=Species]
iris.table[ , list(head(Sepal.Length,5)),
by=Species]
iris.table[ , head(Sepal.Length,5),
by=Species]
install.packages("random")
library(random)
# iris 데이터 프레임의 행에 이름을 지정
rownames(iris) <- randomStrings(n=150, len=2, digits=FALSE,
upperalpha=TRUE, loweralpha=FALSE,
unique=TRUE)
head(iris)
# 데이터 프레임을 데이터 테이블로 변환
iris.table <- as.data.table(iris)
head(iris.table)
# 데이터 프레임의 행 이름을 유지하려면...
iris.table <- as.data.table(iris, keep.rownames=TRUE)
head(iris.table)
# 다시 행의 이름을 유지하지 않고 데이터 테이블로 변환
iris.table <- as.data.table(iris)
head(iris.table)
key(iris.table)
setkey(iris.table, Sepal.Length)
key(iris.table)
iris.table[ Sepal.Length==5, ]
system.time(iris.table[ Sepal.Length==5,])
setkey(iris.table, Sepal.Length, Sepal.Width)
key(iris.table)
setkeyv(iris.table, c("Sepal.Length", "Sepal.Width"))
key(iris.table)
iris.table[ Sepal.Length==5, Sepal.Width:=3]
iris.table[ Sepal.Length==5, ]
iris.table <- as.data.table(iris)
setkey(iris.table, Sepal.Length, Sepal.Width)
key(iris.table)
iris.table[ .(5)]
iris.table[ .(5,3)]
# 꽃잎의 길이가 5이거나 6인 모든 행 출력
iris.table[ .(c(5,6))]
iris.table[ .(c(5,6), 3)]
|