영화에 나오는 배우 / 여배우를 나열하는 여러 열이있는 영화 데이터 세트가 있습니다. 데이터는 지저분하고 때로는 첫 번째 열에 누락 된 값이 있지만 두 번째 열에는 배우의 이름이 포함됩니다. 모든 액터 열을 유지하고 각 비결 측 값을 가장 빠른 열로 이동하고 싶습니다. 예를 들면 :
movies <- data.frame(actor1=c("A","B",NA,"C",NA), actor2=c(NA, "Z", "W", NA, "X"), actor3=c("L","M","N","O","P"))
actor1 actor2 actor3
1 A <NA> L
2 B Z M
3 <NA> W N
4 C <NA> O
5 <NA> X P
되어야합니다 :
actor1 actor2 actor3
1 A L <NA>
2 B Z M
3 W N <NA>
4 C O <NA>
5 X P <NA>
coalesce()
W와 X를 첫 번째 열로 끌어옵니다. 완전한. 그러나 후속 열에 대해 동일한 작업을 수행하려면 어떻게해야합니까? 예를 들어, W가 actor2에서 actor1로 가져 왔으므로 이제 actor2의 세 번째 행에 W가 아닌 N 값을 지정하려고합니다.
옵션은 apply
with 를 사용 MARGIN=1
하여 행을 반복 c
하고 비 NA 요소 다음에 요소를 연결 ( )하는 것 NA
입니다.
movies[] <- t(apply(movies, 1, function(x) c(x[!is.na(x)], x[is.na(x)])))
movies
# actor1 actor2 actor3
#1 A L <NA>
#2 B Z M
#3 W N <NA>
#4 C O <NA>
#5 X P <NA>
또한 열의 하위 집합 인 경우 startsWith
i1 <- startsWith(names(movies), "actor")
해당 열만 업데이트
movies[i1] <- t(apply(movies[i1], 1, function(x) c(x[!is.na(x)], x[is.na(x)])))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다