2012-10-25 2 views
0

저는 미국 선거 데이터, 후보자 기고서 등을 분석하고 있습니다. 그래서 인터넷에서 원시 데이터를 얻었으므로 일부 연습 문제를 배우려 고 시도했습니다. ?summary으로 성공적으로로드하고 분석 한 CSV 파일입니다.R에서 2 차원 데이터 값 필터링하기, 자체 비교하기

는 또한 국가에 의해 별도의 후보 돈 기여에 성공적으로 ?tapply을 사용 :

(작은 샘플 용)
data_amt_st = tapply(data$contb_receipt_amt, data[c('cand_nm', 'contbr_st')], sum) 

?str 나에게이 데이터의 형식을 알려줍니다 지금은 필요

> str(data_amt_st) 
num [1:3, 1:21] NA NA 451 NA NA 201 NA NA 200 NA ... 
- attr(*, "dimnames")=List of 2 
    ..$ cand_nm : chr [1:3] "Bachmann, Michele" "Obama, Barack" "Romney, Mitt" 
    ..$ contbr_st: chr [1:21] "33" "46" "48" "7" ... 

을 data_amt_st에서 값을 필터링합니다. 나는 "Obama, Barack"이 다른 후보자들보다 더 많은 기부금을 가지고 있지만 어떻게해야할지 모른다고 주장한다. ?subset으로 무엇인가?

대단히 감사합니다.


편집 1 : 나는 버락 오바마가 다른 후보보다 높은 기여도 (돈을) 달성 상태의 목록이 필요합니다 : 사람이 더 구체적인 질문을 만드는 방법에 대한, 나에게 말한 참석.


편집 2 : 당신에게 재현 예를 제공하기 위해 노력하는 (이 올바른지를?) : 이제

x = c("a", "b", "c") 
y0 = c(3, 5, 1) 
y1 = c(2, 1, 6) 
y2 = c(4, 2, 3) 
m = cbind(x, y0, y1, y2) 
m 
#  x y0 y1 y2 
# [1,] "a" "3" "2" "4" 
# [2,] "b" "5" "1" "2" 
# [3,] "c" "1" "6" "3" 

, 내가 뭘 y 값을 위해 a보다 높은 bc이다, 알 필요가 .

+1

, 그것은 도움이 될 것입니다 우리는 당신이 달성하고자하는 바를 정확히 _ 맞 춥니 다. "data_amt_st에서 값을 필터링해야합니다."라는 것이 명확하지 않습니다. 어떤 기준으로 필터링하고 싶습니까? –

+0

아, Josh O'Brien, 이제는 "재현 가능한 예"라고 말했을 때의 의미를 알 수 있습니다 .-- 감사합니다. – Silas

+0

여러분의 행렬은'm

답변

2

어쩌면

## max by column (MARGIN=2) 
max_amt <- apply(data_amt_st,MARGIN=2,max,na.rm=TRUE) 
data_amt_st[,max_amt==data_amt_st["Obama",]] 

? (아니이 오바마 행의 NA 값으로 작동 방법을 잘 : 우리에게 재현 예 (http://tinyurl.com/reproducible-000) 유용 할 것을주고 dput를 사용하여 ...) 당신이 말한 경우 또한

x <- letters[1:3] 
y0 <- c(3, 5, 1) 
y1 <- c(2, 1, 6) 
y2 <- c(4, 2, 3) 
m <- data.frame(y0, y1, y2) 
rownames(m) <- x 
maxvals <- apply(m,2,max,na.rm=TRUE) 
which(m["a",]==maxvals) ## or 
names(m)[m["a",]==maxvals] 
+1

'(m) [apply (m, 2, which.max) == 1]'와 같이'which.max()'에 좋은 장소가 될 것입니다. –

관련 문제