0

私は米国の選挙データ、候補者の貢献などを分析しています。そのため、インターネットから生データを取得し、その中でいくつかの演習を実行するいくつかの R を学習しようとしました。これは、正常にロードして分析した CSV ファイルです?summary

私はまた?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 から値を除外する必要があります。「オバマ、バラク」が他の候補者よりも多くの貢献をしたという州が必要ですが、どうすればよいかわかりません。と何か?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

4

1 に答える 1

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(これがオバマ行の値でどのように機能するかわからない:dput再現可能な例(http://tinyurl.com/reproducible-000)を提供するために使用すると便利です...)

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]
于 2012-10-25T16:49:52.770 に答える