세 가지 데이터가있는 매우 큰 데이터 세트가 있습니다. 웨이브 지정이 모든 변수의 끝에 있도록 열 이름을 표준화하고 싶습니다. 나는 그것을 성공적으로했지만 그것을 할 더 간결한 방법을 찾고 있습니다. 내 데이터는 다음과 같습니다.
toy <- as.data.frame(cbind(c(sample(1:100, 5)),
c(sample(1:100, 5)),
c(sample(1:100, 5)),
c(sample(1:100, 5)),
c(sample(1:100, 5)),
c(sample(1:100, 5))))
colnames(toy) <- c(paste0(LETTERS[1:4], "w", c(1,1,2,2)))
colnames(toy)[c(5,6)] <- c(paste0("w3", LETTERS[5:6]))
출력은 다음과 같습니다.
toy
Aw1 Bw1 Cw2 Dw2 w3E w3F
1 49 23 66 20 34 76
2 50 75 69 21 47 41
3 88 61 19 77 45 7
4 79 94 48 19 61 23
5 83 17 79 35 14 21
세 번째 파동이 다른 두 가지와 같이 형식화되는 경우 다음과 같기를 바랍니다.
Aw1 Bw1 Cw2 Dw2 Ew3 Fw3
1 49 23 66 20 34 76
2 50 75 69 21 47 41
3 88 61 19 77 45 7
4 79 94 48 19 61 23
5 83 17 79 35 14 21
이것이 내가 한 일입니다.
t1.toy <- toy %>% rename_at(vars(contains("w3")),
.funs = list(function(x) paste0(x, "temp")))
t2.toy <- t1.toy %>% rename_at(vars(contains("w3")),
.funs = list(function(x) gsub(x = x,
pattern = "w3",
replacement = "")))
t3.toy <- t2.toy %>% rename_at(vars(contains("temp")),
.funs = list(function(x) gsub(x = x,
pattern = "temp",
replacement = "w3")))
더 빠른 방법이 있습니까?
아마도 다음 코드를 사용할 수 있습니다.
toy <- `names<-`(toy,gsub("(.*?\\d+)(.*)","\\2\\1",names(toy)))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다