data<-data.frame(x=c("a,b","c","a,b","d,e,f,g"))
x
1 a,b
2 c
3 a,b
4 d,e,f,g
x 열에서 정보를 추출하고 모든 고유 정보를 열 y에 쓰고 싶습니다. 어떻게해야합니까? 고맙습니다!정규식 추출 쉼표 사이의 정보
y
1 a
2 b
3 c
4 d
5 e
6 f
7 g
data<-data.frame(x=c("a,b","c","a,b","d,e,f,g"))
x
1 a,b
2 c
3 a,b
4 d,e,f,g
x 열에서 정보를 추출하고 모든 고유 정보를 열 y에 쓰고 싶습니다. 어떻게해야합니까? 고맙습니다!정규식 추출 쉼표 사이의 정보
y
1 a
2 b
3 c
4 d
5 e
6 f
7 g
d<-data.frame(x=c("a,b","c","a,b","d,e,f,g"))
> levels(d$x)
[1] "a,b" "c" "d,e,f,g"
> e <- as.character(levels(d$x))
> e
[1] "a,b" "c" "d,e,f,g"
>
> f <- strsplit(e,",")
> f
[[1]]
[1] "a" "b"
[[2]]
[1] "c"
[[3]]
[1] "d" "e" "f" "g"
unlist(f)
[1] "a" "b" "c" "d" "e" "f" "g"
tidyr
솔루션 : 골 y를이 같은 예상된다
library(tidyr)
data %>% unnest(x=strsplit(as.character(x),",")) %>% unique()
또는 정규식 정말 여기에 필요하지 않습니다
data %>% separate_rows(x) %>% unique()
해들리가 0.5.0에있는 해당 구조체의 래퍼를 작성했습니다. 'data %> % separate_rows (x) %> % unique()' – alistaire
덕분에, 나는 흘러간 것을 보았지만 찾을 수 없다고 생각했습니다. –
(감사 @alistaire하기). 'unique (scan (text = as.character (data $ x), sep = ",", what = ""))'와 같은 것이 아마도 그렇게 할 것입니다. 'strsplit()'이 또 다른 옵션입니다. –
또는'strsplit'을 사용하십시오. 예를 들면 다음과 같습니다.'unlist (strsplit as.character (data $ x), ","))' – agstudy
데이터가 단지 쉼표로 분리되어 있다면 실제로는 정규식이 필요 없습니다. 그렇지 않으면'y <- unique (unlist (str_extract_all (data $ x, "[^,] +"))) 또는 좀 더 구체적인 것으로 보일 수 있습니다. –