2017-01-10 2 views
0

친애하는 스택 오버플로 커뮤니티,열 레이블 (일반 문자 포함)을 기반으로 열을 합하는 방법은 무엇입니까?

나는 포럼에 처음 오 셨습니다.

다음 내 문제 그것은 :

열 레이블은 일반적인 문자가 포함되어 있는지 여부를 내가 열을 가로 질러, 행 당, 요약하고 싶습니다

(내 경우에는, 하나 포함 "전체"또는 "불완전")와 관련 열 "sum_complete"및 "sum_incomplete"에서 이러한 합계를보고하십시오.

set.seed(1) 
incomplete_x=1:10 
incomplete_y=rnorm(10) 
complete_x=runif(10) 
complete_y=3:12 
dt=cbind(incomplete_x,incomplete_y,complete_x,complete_y) 
내가 dt[,5]dt[,6] 각각 포함하고 싶은

:

0.3735462 2.1836433 2.1643714 5.5952808 5.3295078 5.1795316 7.4874291 8.7383247 9.5757814 9.6946116

3.934705 4.212143 5.651674 6.125555 7.267221 8.386114 9.013390 10.382388 11.869691 12.340349

나는 (미안하지만, 코딩에 능숙하지 않다.) :

for (i in 1:ncol(dt)) { 
    if (grepl("incomplete",colnames(dt)[i])==TRUE) { 
    dt[,"sum_incomplete"] <- rowSums(dt) 
    } else { 
    dt[,"sum_complete"] <- rowSums(dt) 
    } 
} 

그러나 코드는 작동하지 않는다.

이 코드를 도와 주시겠습니까? 도움을 주셔서 감사합니다.

앤서니

답변

0

당신이 grep를 사용하여 올바른 방향으로 가고 있었다, 그러나 for 루프가 보조 노트로

dt <- cbind(dt, rowSums(dt[, grep("^incomplete", colnames(dt))])) 
dt <- cbind(dt, rowSums(dt[, grep("^complete", colnames(dt))])) 

colnames(dt)[5:6] <- c("sum_incomplete", "sum_complete") 

을 필요하지 않습니다, 아마 가장 행렬 등의 이름 지정 dt를 사용하는 것이 아니다 함수 이름이며 다른 라이브러리의 약어 일 수도 있습니다.