【发布时间】:2012-10-15 21:36:59
【问题描述】:
我正在分析美国的选举数据、候选人的贡献等。所以我从互联网上获取了原始数据,并尝试学习一些 R 语言并在其中执行一些练习。这是我使用?summary 成功加载和分析的 CSV 文件。
我还成功地使用了?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:听大家告诉我的,关于提出一个更具体的问题:我需要一份巴拉克·奥巴马 (Barack Obama) 比其他候选人贡献水平更高(更多钱)的州列表。
编辑 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 高于 b 和 c。
【问题讨论】:
-
此外,如果您准确地告诉我们您想要实现的目标,将会很有帮助。 “我需要从 data_amt_st 中过滤掉值”尚不清楚。您要按什么标准过滤?
-
啊,乔什·奥布莱恩,现在我明白你告诉我“可重现的例子”是什么意思了 :-) 谢谢。
-
你的矩阵更适合
m <- data.frame(y0,y1,y2); rownames(m) <- x;在矩阵中组合字符和数字使它们全部强制转换为矩阵 -
感谢您添加可重现的示例。您可以通过
df <- as.data.frame(m[,2:4], row.names=m[,1])直接将矩阵转换为 Ben Bolker 建议的更好的数据格式。
标签: r statistics data-mining