【发布时间】:2015-05-19 17:39:08
【问题描述】:
由于我的数据要复杂得多,我制作了一个较小的样本数据集(我留下了重塑以展示我是如何生成数据的)。
set.seed(7)
x = rep(seq(2010,2014,1), each=4)
y = rep(seq(1,4,1), 5)
z = matrix(replicate(5, sample(c("A", "B", "C", "D"))))
temp_df = cbind.data.frame(x,y,z)
colnames(temp_df) = c("Year", "Rank", "ID")
head(temp_df)
require(reshape2)
dcast(temp_df, Year ~ Rank)
导致...
> dcast(temp_df, Year ~ Rank)
Using ID as value column: use value.var to override.
Year 1 2 3 4
1 2010 D B A C
2 2011 A C D B
3 2012 A B D C
4 2013 D A C B
5 2014 C A B D
现在我基本上想使用类似 unique 的函数,但忽略顺序来查找前 3 个元素的唯一位置。
因此在这种情况下:
我会在第 5 行有 A、B、C
我会在第 1 行和第 3 行有 A、B、D
我会在第 2 行和第 4 行有 A、C、D
我还需要这些“独特”事件的计数
还有两件事。首先,我的值是字符串,我需要将它们保留为字符串。 其次,如果可能的话,我会在 year 和 1 之间设置一个名为 Weighting 的列,然后在计算这些独特组合时,我会包括每个组合的权重。这并不那么重要,因为所有的权重都是小的正整数值,所以我可能会更早地复制行以考虑权重,然后将唯一的对制成表格。
【问题讨论】:
-
您应该使用
set.seed来获得可重复性stackoverflow.com/questions/5963269/… -
哎呀,这是我睡眠不足的影响