[R] 연습

[R] 데이터프레임 관련 함수 및 코드

Simon Yoon 2022. 4. 17. 21:59

아래는 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("이름", "거주지역", "주요업무")

'[R] 연습' 카테고리의 다른 글

[R] sub(), gsub() 함수  (0) 2022.04.24
[R] subset() 함수  (0) 2022.04.22
R 기초 프로그래밍  (0) 2022.04.15
[R] 지터링(jitter)  (0) 2022.02.06
[R] 시각화(ggplot 패키지편)  (0) 2022.01.23