6. data 추출 -> 치환 & 삽입

2018. 12. 27. 16:58

데이터 추출

aws = read.delim('data/AWS_sample.txt',
                  sep='#',
                  stringsAsFactors = FALSE)
#### $를 사용한(객체%칼럼명) 하위구조 데이터 추출 ####
# 1. 컬럼명 확인
colnames(aws)
# 2. 특정칼럼 추출 - 1000개까지 추출하고 나머지는 생략된다.
aws$TA


# 벡터연산을 사용한 하위구조 중간데이터 추출
#### row 추출 ####
# 객체[ 원하는 row, ]
aws[2, ]
aws["2",] # 잘안씀.

# 연속적인 데이터 추출
aws[3:10, ]

# c()을 활용한 이산(각각의) 데이터 추출
aws[ c(2, 135, 3:10) , ]


#### columns 추출 ####
aws[ , 3]
aws[ , 3:4]
aws[ , c(1, 3)]
aws[ , c("Wind")]
aws[ , c("AWS_ID", "Wind")] #순서를 바꿔주면, 칼럼의 순서를 바꿀 수 있다.

#### 행X열 동시 추출 ####
aws[1, 3]
aws["1", "TA"]
aws[2:5, c("AWS_ID", "TA")]


데이터 추출 실습

#### 데이터 추출 실습 #####
# $는 list같은 상위구조에서 하위구조 접근시 편하다.
aws$AWS_ID # $뒤에는 자동완성으로 하면 편함
aws$Wind

# 벡터연산 - 먼저 대괄호[]안에 콤마(,)를 찍어놓고 연산해서 실수안하게 하자.
aws[3,]
aws[15, ]
aws[1:6,]
aws[c(2, 6, 7, 8),]
aws[c(10:5, 2),] # 연속적으로 할때는, 역순이어두 된다.

aws[,3]
aws[,c(2, 4)]
aws[,"Wind"]

aws[1, 3]
aws[1:3, 2] #칼럼이 1개일 경우는 <1차원의 벡터>형식으로 나오고***
aws[1, 2:3] #칼럼이 2개 이상일 경우 칼럼명과 함께<2차원의 벡터 data.frame>형태로 나온다.
aws[1:3, 2:3]
aws[c(3, 4, 1, 2),c(3, 4, 1, 2)] # 벡터연산으로 칼럼의 순서를 바꿀 수 있다!


데이터 치환 및 삽입 바로 실습

aws = read.delim('data/AWS_sample.txt',
                  sep='#',
                  stringsAsFactors = FALSE)
# 데이터 치환은 추출한 것에 대입만 해주면 된다.
aws[1,] = 1
head(aws, 3)

aws[c(1, 3, 6),] = 9999
head(aws)

# 데이터 삽입은 추출할 때, 새로운 행이나 칼럼 번호를 입력해주면 된다.
# 하지만 새로운 숫자로 생성한 칼럼명은 자동으로 v6, v7 식으로 표기된다.
# 새로운 칼럼명""을 입력해주면 되는데, 기존 칼럼명과 같을 경우덮어쓴다.

aws[ , 6] = "안녕?" # 숫자로 새로운 칼럼을 삽입시, 마지막 칼럼 다음 숫자이어야 에러가 안난다.
head(aws)

aws[ , ncol(aws) + 1] = "hi!" # 숫자로 마지막칼럼의 다음 칼럼을 추가해줄 때는 ncol(aws)+1을 이용하면 쉽다.
head(aws)

aws[,"칼럼추가!"] = "asdf" # 문자로 새로운 칼럼명을 입력해 추가하면 자동으로 다음으로 추가해준다.
head(aws)

#### 칼럼명 바꿔주기 ####
# 컬럼명 확인함수 colnames()를 이용하여 [6] 인덱싱해서 바꾸는 것이다.
colnames(aws)[6] # 1차원 벡터인 colnames()에서 [6]번째 추출
colnames(aws)[6] = "col_6"
head(aws)
colnames(aws)[7:8] = c("7번째", "8번째") # 여러 칼럼을 바꿀 때, 대입시는 c()를 활용해서 각각 넣어준다.

+ Recent posts