상황은 다음과 같습니다. 많은 정수가 들어있는 문자 인 열 "a"가 있습니다. 각 정수는 범주를 나타냅니다. 각 관찰에 대해 그들이 포함하고있는 독특한 레벨을 알고 싶습니다. b 열은 원하는 결과를 나타냅니다. 중복으로 정리되었지만 각 고유 한 수준을 나타냅니다. 내가 알고 싶은 것은 칼럼 a를 어떻게 청소하여 칼럼 b처럼 보이는지입니다. 60k 행의 솔루션을 구현해야합니다.중복 팩터 수준에서 문자 관찰을 깨끗이하십시오.
a b
1 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5 | 4, 5
2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 | 2
3 86, 86, 86, 86, 86, 37, 37, 37, 37, 37, 37, 8, 8 | 86, 37, 8
a <- c("4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5", "2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2", "86, 86, 86, 86, 86, 37, 37, 37, 37, 37, 37, 8, 8")
b <- c("4, 5", "2", "86, 37, 8")
df <- data.frame(a, b)
나는 중복 요소 값을 삭제에 대해 몇 가지 게시물을 읽고,하지만 당신은 시도 할 수로서 자신이 유용한 아무것도 양보하지 않습니다.
droplevels(factor(df$a))
기본적으로이 문제는 해결되지만 60k 행에는 적합하지 않습니다.
df$a[1] <- factor(unique(as.numeric(unlist(str_extract_all(df$a[1], "[[:digit:]]+")))))
df$a[2] <- factor(unique(as.numeric(unlist(str_extract_all(df$a[2], "[[:digit:]]+")))))
df$a[3] <- factor(unique(as.numeric(unlist(str_extract_all(df$a[3], "[[:digit:]]+")))))
자신에게 질문하는 것이 좋습니다. 제 데이터가 올바른 형식입니까? 쉼표로 구분 된 숫자로 된 문자열을 가지고 있다면 아마도 벡터 목록이나 그룹화 된 데이터 프레임을 만들고 싶을 것입니다. – dash2