2011-11-18 2 views
3

기부자 및 기부자 명을 가진 데이터 프레임이 있습니다.R은 이름을 숫자로 변환합니다.

**donation**    **Donor** 
25.00    Steve Smith 
20.00    Jack Johnson 
50.00    Mary Jackson 
    ...     ... 

pvclust 패키지를 사용하여 클러스터링을 시도하고 있습니다. 불행하게도이 패키지는 숫자가 아닌 데이터를 사용하지 않는 것 같습니다.

> rs1.pv1 <- parPvclust(cl, rs1, nboot=10) 
Error in cor(x, method = "pearson", use = use.cor) : 'x' must be numeric 

두 가지 질문이 있습니다.

1) 이보다 나은 패키지 또는 방법이 있습니까?

2) 기증자 이름 목록을 "정상화"할 수있는 방법이 있습니까? 즉 고유 한 기증자 이름 목록을 얻고 각 ID 번호를 할당 한 다음 ID 번호를 문자 이름 대신 데이터 프레임에 삽입합니다.

+1

난 강력하게 당신이 ** ** 숫자에 그 이름을 변환하고 parPvclust''에 먹이를하지 않으려는 생각한다. 대신에,'? parPvclust'와'? lung'의 예를 보면,'donor' 컬럼을 rownames 속성으로 사용하고, matrix 나 data.frame에서 제거하는 것처럼 보입니다. –

+0

@ JoshO'Brien : 답장 하시겠습니까 ??? –

+0

이 예제에서 수행하려는 작업에 대해 좀 더 자세하게 설명 할 수 있습니까? 예를 들어 비슷한 기부 수준을 가진 기증자 집단을 생각해 내고 싶습니까 (이 경우 기증자 당 평균 기부금을 모으기 위해'ave' 또는'plyr :: ddply'를 사용하도록 유혹 될 것입니다.). .) –

답변

5

:

#If donor is a factor then 

as.numeric(donor) 

#will transform your factor to numeric. 
#If it isn't, tranform it to a factor and the to numeric 
as.numeric(as.factor(donor)) 

는 그러나, 나는 고전을 사용하여 다음 숫자로 기증자 목록을 변환하고하는 것은 의미가 전혀하게 모르겠어요.

HTH

+0

11 초 동안 때려. 'as.numeric (as.factor (donor))'..를 의미합니까? –

+0

@BenBolker, 네, 바보 같은 저요! –

2

rs1 <- transform(rs1, Donor=as.numeric(factor(Donor))) 어떨까요? (경고 : 나는 그 말이 의미가 있는지 알기에 충분하다고 생각하는 것에 대해 생각하지 못했습니다. 그래서 # 1이 아닌 # 2의 질문에만 답합니다.) 일반적으로 Donor은 이미 요소 일 수 있습니다 (예 : read.table 또는 read.csv). factor() 부분이 중복 될 수 있습니다. 숫자 2의

관련 문제