아래는 R에서의 데이터프레임 관련 기본 함수들과 코드를 작성해 놓은 것이다.
함수 |
코드 |
ncol(df) |
data frame 열의 개수 |
nrow(df) |
data frame 행의 개수 |
dim(df) |
data frame 열 및 행의 개수 |
length(df) |
data frame 변수 개수 |
names(df) |
data frame 열 이름 |
rownames(df) / row.names(df) |
data frame 행 이름 |
colnames(df) / col.names(df) |
data frame 열 이름 |
ls(df) |
칼럼명 확인 |
dataframe[c(1, 2), ] |
1, 2행 |
dataframe[c(1, 2, 3)] |
1, 2, 3열 |
head(df, 5) |
데이터 앞부분 값 확인 |
tail(df, 5) |
데이터 뒷부분 값 확인 |
# dataframe 생성하기
no <- c(1,2,3,4)
name <- c('Apple','Peach','Banana','Grape')
price <- c(500,200,100,50)
qty <- c(5,2,4,7)
sales <- data.frame(NO=no,NAME=name,PRICE=price,QTY=qty)
sales
# matrix를 data.frame()을 사용해서 dataframe으로 변경
sales2 <- matrix(c(1,'Apple',500,
2,'Peach',200,2,
3,'Banana',100,4,
4,'Grape',50,7),nrow=4,byrow=T)
sales_df <- data.frame(sales2) ; sales_df
# 생성한 데이터 프레임의 변수 명을 변경
names(sales_df) <- c("NO", "NAME", "PRICE", "QTY") ; sales_df
# 원하는 조건을 지정하여 조회
subset(sales, qty<5)
# NO NAME PRICE QTY
# 2 2 Peach 200 2
# 3 3 Banana 100 4
subset(sales, name == "Apple")
# 데이터프레임 합치기
no <- c(1,2,3)
name <- c('apple','banana','peach')
price <- c(100,200,300)
df1 <- data.frame(NO=no,NAME=name,PRICE=price)
no <- c(10,20,30)
name <- c('train','car','airplane')
price <- c(1000,2000,3000)
df2 <- data.frame(NO=no,NAME=name,PRICE=price)
# cbind()
df3 <- cbind(df1, df2) ; df3
# NO NAME PRICE NO NAME PRICE
# 1 1 apple 100 10 train 1000
# 2 2 banana 200 20 car 2000
# 3 3 peach 300 30 airplane 3000
# rbind()
df4 <- rbind(df1, df2) ; df4
# NO NAME PRICE
# 1 1 apple 100
# 2 2 banana 200
# 3 3 peach 300
# 4 10 train 1000
# 5 20 car 2000
# 6 30 airplane 3000
# merge()
# merge(x, y, by = intersect(names(x), names(y)),
# by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
# sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
# incomparables = NULL, ...)
df1 <- data.frame(name=c('apple','banana','cherry'),
price=c(300,200,100))
df2 <- data.frame(name=c('apple','cherry','mango'),
qty=c(10,20,30))
merge(df1, df2) # 공통으로 갖고 있는 것만
merge(df1, df2, all=T) # 전체 데이터를 병합하지만 없는 값은 NA로 처리
# 행 추가
df1 <- rbind(df1, list(name="coconut", price=400)) ; df1
df1 <- rbind(df1, data.frame(name="coconut", price=400)) ; df1
# 열 추가
df1 <- cbind(df1, list(qty=c(4, 6, 8, 10))) ; df1
# subset
member2 <- subset(member, select = c(NO, NAME, TEL)) ; member2 # 원하는 변수만 선택
member3 <- subset(member, select = -c(NO,TEL)) ; member3 # 특정 변수 제외
# colnames change
colnames(member3) <- c("이름", "거주지역", "주요업무")