【发布时间】:2014-12-27 14:00:19
【问题描述】:
我想知道如何将多列与单列中的值进行比较,然后使用这些匹配项来创建差异表。我有一个政策结果的政治数据集,以及某些组织是否支持或反对这些结果,按年份划分。这是一些模拟数据:
结果 0 表示法律从未发生,结果 1 表示发生了。 对于组织而言,负数表示他们反对该法律,正数表示他们支持该法律:
set.seed(123)
Data <- data.frame(
year = sample(1998:2004, 200, replace = TRUE),
outcome = sample(0:1, 200, replace = TRUE),
union = sample(-1:1, 200, replace = TRUE),
chamber = sample(-1:1, 200, replace = TRUE),
pharma = sample(-1:1, 200, replace = TRUE),
gun = sample(-1:1, 200, replace = TRUE),
dem = sample(-1:1, 200, replace = TRUE),
repub = sample(-1:1, 200, replace = TRUE)
)
我想知道一个组织每年有多少次得到工会的支持或反对。
我想它会是这样的表格,其中匹配等于 1,否则为 -1(数据中也有许多 NA,组织不采取任何立场):
DATA$contra <- ifelse(DATA$union == page.bin$chamber, 1, -1)
在数据集中,连续列中大约有 50 个组织。为每场比赛创建 50 个新列似乎并不实用。即使这是最好的方法,我也不知道如何应用该函数来创建 50 个新列。
最后,我想创建一个热图或一种方法来可视化哪些组织与联合列匹配。但是,首先,我认为,我需要某种数据表。
感谢您的帮助!
【问题讨论】:
-
根据实际数据的样子,您可以先将 df 重塑为长格式,这样您就有一个变量“组织”,然后您可以汇总数据,按年份和组织分组并使用例如如果是。
-
建议您将问题编辑为 a) 使用 set.seed() 使其可重现,b) 使示例名称保持一致。
标签: r