주석 줄의 문장을 기반으로 사람들에게 수업을 할당해야한다고 가정 해 보겠습니다. (실제 데이터는 이것보다 더 복잡하고 단순화했습니다) 그래서 remathces (), gsub () 및 gregexpr ()과 함께 정규식을 사용하여 데이터에서 주석 문장에서 문자열을 추출했습니다. 그런 다음 목록을 열에 저장하고 아래와 같이 문자로 결합했습니다.
>cbind.data.frame(level,software,month,stringsAsFactors = FALSE)
level software month
1 c("beginner1","beginner2") c++ Dec
2 NA Java Jan
3 "beginner3" NA May
4 "intermediate2" NA NA
5 NA Matlab Mar
6 "advanced1" c("java","c++") Jul
모든 문자를 하나의 열로 하위 집합하고 싶습니다.
-목록 c ( "beginner1", "beginner2")를 "beginner1", "beginner2"로 나누기
-NA 하락
-다음과 같이 캐릭터로 남아 있음
newcol
"beginner1","beginner2","c++","Dec"
"Java","Jan"
"beginner3", "May"
"intermediate2"
"Matlab", "Mar"
"advanced1","java","c++","Jul"
그러나 제가 합치면 하나의 캐릭터로 합쳐졌습니다.
> newcol<-unite(combined, newcol, 1:ncol(combined), remove=TRUE, sep = ",")
"beginner1,beginner2,c++,Dec"
"Java,Jan"
"beginner3, May"
"intermediate2"
"Matlab, Mar"
"advanced1,java,c++,Jul"
여러 문자를 분리 된 문자로 하나의 열에 저장할 수 있습니까?
다음은 사용하는 기본 R 솔루션입니다.
f <- Vectorize(function(u) {
z <- unlist(regmatches(u,gregexpr('\".*?\"',u,perl = T)))
if (length(z)> 0) {
r <- gsub('\"',"",z)
} else {
r <- u
}
r
})
df$newcol <- apply(df,1,function(x) f(na.omit(x)))
그런
> df
level software month newcol
1 c("beginner1","beginner2") c++ Dec beginner1, beginner2, c++, Dec
2 <NA> Java Jan Java, Jan
3 beginner3 <NA> May beginner3, May
4 intermediate2 <NA> <NA> intermediate2
5 <NA> Matlab Mar Matlab, Mar
6 advanced1 c("java","c++") Jul advanced1, java, c++, Jul
어디
> df$newcol
$`1`
$`1`$level
[1] "beginner1" "beginner2"
$`1`$software
[1] "c++"
$`1`$month
[1] "Dec"
$`2`
$`2`$software
[1] "Java"
$`2`$month
[1] "Jan"
$`3`
$`3`$level
[1] "beginner3"
$`3`$month
[1] "May"
$`4`
$`4`$level
[1] "intermediate2"
$`5`
$`5`$software
[1] "Matlab"
$`5`$month
[1] "Mar"
$`6`
$`6`$level
[1] "advanced1"
$`6`$software
[1] "java" "c++"
$`6`$month
[1] "Jul"
데이터
df <- structure(list(level = c("c(\"beginner1\",\"beginner2\")", NA,
"beginner3", "intermediate2", NA, "advanced1"), software = c("c++",
"Java", NA, NA, "Matlab", "c(\"java\",\"c++\")"), month = c("Dec",
"Jan", "May", NA, "Mar", "Jul")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다