본문 바로가기

R programming

길이가 다른 값들을 구분하여 각 열로 나누어주기 in R

반응형

아래와 같은 데이터프레임이 있다고 가정해보자.

ID CODE
1 12345
2 12345, 56788, 12222, 11111, 22222, 33333
3 12333
4 12344
5 42323
6 11111, 22222

각 아이디에는 1개 이상의 CODE값을 가지고 있다.
복수개의 CODE값을 가지고 있는 것은 쉼표로 구분이 되어있다.

만들고자 했던 데이터 프레임의 형식은 다음과 같았다.

id value1 value2 value3 value4 value5
1 12345 NA NA NA NA
2 12345 56788 12222 1111 22222
3 12333 NA NA NA NA
4 12344 NA NA NA NA
5 42323 NA NA NA NA
6 11111 22222 NA NA NA

처음엔 strsplit방법을 써서 해결하면 되는 줄 알았는데, 막상 적용하기가 쉽지않았다.


결국 구글링을 통해서 내가 원하는 모양을 간단하게 구현해주는 라이브러리를 찾았다.
splitstackshape패키지를 통해 구현가능했다.

library(splitstackshape)
cSplit(data,"code",",")

패키지를 불러오고 cSplit함수를 통해 code안에 있는 데이터를 쉼표를 구분자로 하여 나누어준다.
다음과 같은 결과를 얻을 수 있게 된다.

아래 링크의 내용을 참고해 공부했다.

 

stackoverflow.com/questions/25244684/split-different-lengths-values-and-bind-to-columns?fbclid=IwAR1xUu-sxcYE05IfHuZdKFsbomVVeoP-VJ5FzDLvEd3-iVKk0WVbxdhGEOI

 

Split different lengths values and bind to columns

I've got a rather large (around 100k observations) data set, similar to this: data <- data.frame( ID = seq(1, 5, 1), Values = c("1,2,3", "4", " ", "4,1,6,5,1,1...

stackoverflow.com

 

반응형