2015-01-07 5 views
-1

나는 aggregate 또는 reshape으로 만족할 수 있다고 생각하지만 필자는 그 사실을 알 수 없다.고유 한 식별자로 집계하고 고유 한 값을 문자열에 넣기

나는 각자를 소유 한 자동차의 색상으로 이름 목록을 가지고 있습니다. 이 데이터는 긴 형식이므로 이름은 여러 색상을 가질 수 있습니다. 나는 이름으로 융합하고 최대 색상을 얻고 싶습니다. 예를 들어

,

Name car_colour 
Euler  blue 
Gauss  red 
Hilbert  white 
Hilbert  green 
Knuth  yellow 
Knuth  orange 
Knuth  cyan 
Knuth  violet 
Knuth  darkblue 

이 될 것입니다 ...

Name  car_color 
Euler  blue 
Gauss  red 
Hilbert  green 
Knuth  cyan 

어떻게이를 것인가?

+0

알아 내려고 시도하는 동안 무엇을 시도 했습니까? 코드를 게시하고 잘못 된 위치를 표시하십시오. –

+0

내 게으름을 용서하십시오 (또는 어쩌면 아주 오래 전에 매우 모호했습니다).하지만 해결책을 찾았습니다. 그것은 매우 간단했습니다 ... – Galled

답변

1

죄송 사람하지만 대답은 매우 간단했다 :

> Name=c('Euler','Gauss','Hilbert','Hilbert','Knuth','Knuth','Knuth','Knuth','Knuth') 
> car_colour=c('blue','red','white','green','yellow','orange','cyan','violet','darkblue') 
> nc=as.data.frame(cbind(Name,car_colour)) 
> nc 
    Name car_colour 
1 Euler  blue 
2 Gauss  red 
3 Hilbert  white 
4 Hilbert  green 
5 Knuth  yellow 
6 Knuth  orange 
7 Knuth  cyan 
8 Knuth  violet 
9 Knuth darkblue 
> nc.agg <- aggregate(as.character(car_colour) ~ Name, nc, FUN = "min") 
> nc.agg 
    Name as.character(car_colour) 
1 Euler      blue 
2 Gauss      red 
3 Hilbert     green 
4 Knuth      cyan 
+4

'data.frame (cbind (...))'을하는 습관에 빠지지 마십시오.'data.frame (Name, car_colour)'를 직접 사용하십시오. 그렇지 않으면 모든 숫자 데이터가 끝 문자 데이터를 강제로. 또한'data.frame()'을 할 때'stringsAsFactors = FALSE'를 지정하면'as.character()'를 건너 뛸 수 있습니다. – thelatemail

0

빠른, 방법 슈퍼 끔찍한!

나는 test라는 예제를 만들었습니다.

test 
letter color 
[1,] "a" "blue" 
[2,] "a" "red" 
[3,] "a" "red" 
[4,] "b" "orange" 
[5,] "c" "green" 


testTable=table(test[,1], test[,2]) 
testNames=colnames(testTable)[apply(testTable,1,which.max)] 
testOut=data.frame(letter=unique(test[,1]), color=testNames) 

다른 사람이 같은 대답을하는 데 어리석은 방법 일 수 있습니다. 나는 그것을 한 줄짜리 사람에게 기쁘게 upvote거야!

관련 문제