2012-11-16 2 views
1

R에 중복 열 이름이있는 데이터 프레임이 있습니다.이 데이터 프레임의 특정 열을 부분 집합을 사용하여 선택하면 해당 이름이 중복되도록 이름이 변경됩니다. data.frame() 함수를 사용하여 데이터 프레임을 만들 때 check.names = FALSE 인수를 사용하여이 작업을 중단 할 수 있습니다. 하위 집합 (또는 이름 열을 선택하는 다른 방법)을 사용하여이 작업을 수행 할 수도 있습니다. . 예를 들어서브 세트 할 때 중복 열 이름을 유지하십시오.

내가 원하는 반면 나는,

subset(data, select = selectVec) 

가 중복 신뢰 구간 '낮은 CI.1'와 '위 CI.1'을 이름을 변경하는 코드를 사용하여 dataframe

data <- data.frame('sample' = 50, 'x_mean' = 1.5, 'Lower CI' = 1.0, 'Upper CI' = 2.0, 'sample' = 50, 'y_mean' = 0.6, 'Lower CI' = 0.3, 'Upper CI' = 0.9, check.names = FALSE) 

selectVec <- c(TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE) 

이 있다고 이를 '하위 CI'및 '상위 CI'로 유지합니다. 누구든지이 일을하는 방법을 알고 있습니까?

미리 감사드립니다.

답변

3

[과 동일한 동작이 나타나는 것 같습니다. 내가 생각할 수있는 유일한 방법은 이후에 이름을 할당하는 것입니다

subdata <- data[, selectVec, drop = FALSE] 
names(subdata) <- names(data)[selectVec] 

그러나, 중복 열 이름을 갖는 데이터를 유지하는 매우 자연스러운 (명백하게) 복잡하고 위험 형식입니다 점에 유의. 나는 왜 파일이나 data.frame이 처음에 열을 복제하여 거기서 고쳐야하는지 이해하려고 노력할 것이다.

+0

덕분에, 그래 나는 [뿐만 아니라와 같은 결과를 시도 것입니다. 이후에 데이터 프레임의 이름을 바꾸는 것이 가장 좋은 방법 일 것입니다. – user1165199

1

이 방법을 사용하면 [.data.frame을 통과하지 않아 이름을 다시 지정해야합니다. 데이터 프레임은 데이터 프레임의 열을 처리하는 것과 같은 방식으로 목록 및 논리적 인덱싱과 함께 작동합니다.

data.frame(as.list(data)[ selectVec ], check.names=FALSE) 
# sample x_mean Lower CI Upper CI y_mean Lower CI Upper CI 
#1  50 1.5  1  2 0.6  0.3  0.9 
관련 문제