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 回答