- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有大型分类数据集,想快速生成倒数表来比较类别之间的共同元素的比例。
输入示例:
df <- structure(list(YEAR = structure(c(5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L), .Label = c("2013", "2014", "2015", "2016", "2017"), class = "factor"),
Entry_Number_F = c(3170L, 3182L, 3169L, 3178L, 3180L, 3181L,
3097L, 3168L, 3164L, 3179L, 3171L, 3169L, 3170L, 3178L, 3097L,
3177L, 3168L, 3164L, 3179L, 3097L, 3164L, 3168L, 3169L, 3170L,
3171L, 3172L, 3173L, 3174L, 3175L, 3176L, 3097L, 3164L, 3168L,
3169L, 3170L, 3097L, 3156L, 3168L, 3169L, 3170L)), .Names = c("YEAR",
"Entry_Number_F"), row.names = c(181L, 182L, 183L, 184L, 186L,
196L, 199L, 202L, 204L, 768L, 3213L, 3948L, 3950L, 3954L, 3957L,
3958L, 3963L, 3964L, 3969L, 7836L, 7837L, 7838L, 7839L, 7840L,
7841L, 7842L, 7843L, 7844L, 7845L, 7846L, 10785L, 10786L, 10787L,
10788L, 10789L, 13679L, 13680L, 13681L, 13682L, 13683L), class = "data.frame")
期望的输出:
structure(list(X2017 = c(1, 0.6666667, 0.4888889, 0.4888889,
0.4888889), X2016 = c(0.7317073, 1, 0.6585366, 0.6341463, 0.6097561
), X2015 = c(0.44, 0.54, 1, 0.68, 0.58), X2014 = c(0.468, 0.553,
0.723, 1, 0.702), X2013 = c(0.423, 0.481, 0.557, 0.6346, 1)), .Names = c("X2017",
"X2016", "X2015", "X2014", "X2013"), class = "data.frame", row.names = c(2017L,
2016L, 2015L, 2014L, 2013L))
我可以用一种笨拙的方式得到我想要的答案,如下:
unique(df$YEAR)
这些年的子集。
Year1 <- "2017"
Year2 <- "2016"
Year3 <- "2015"
Year4 <- "2014"
Year5 <- "2013"
对每一年进行子集化。
df.2017 <- droplevels(subset(df, YEAR=="2017"))
df.2016 <- droplevels(subset(df, YEAR=="2016"))
df.2015 <- droplevels(subset(df, YEAR=="2015"))
df.2014 <- droplevels(subset(df, YEAR=="2014"))
df.2013 <- droplevels(subset(df, YEAR=="2013"))
找出年份之间常见条目的比例。
length(Reduce(intersect,
list(df.2017$Entry_Number_F,
df.2017$Entry_Number_F
)))/length(unique(df.2017$Entry_Number_F))
length(Reduce(intersect,
list(df.2017$Entry_Number_F,
df.2016$Entry_Number_F
)))/length(unique(df.2017$Entry_Number_F))
length(Reduce(intersect,
list(df.2017$Entry_Number_F,
df.2015$Entry_Number_F
)))/length(unique(df.2017$Entry_Number_F))
length(Reduce(intersect,
list(df.2017$Entry_Number_F,
df.2015$Entry_Number_F
)))/length(unique(df.2017$Entry_Number_F))
length(Reduce(intersect,
list(df.2017$Entry_Number_F,
df.2014$Entry_Number_F
)))/length(unique(df.2017$Entry_Number_F))
length(Reduce(intersect,
list(df.2017$Entry_Number_F,
df.2013$Entry_Number_F
)))/length(unique(df.2017$Entry_Number_F))
这显然不理想。我已经尝试了一些东西,例如下面的代码,以及类似于此处链接 example 的东西,但它并没有通过简单的步骤就给我倒数表。
x <- df %>% group_by(YEAR) %>% mutate(count = n_distinct(Entry_Number_F))
x <- aggregate(Entry_Number_F ~ YEAR, Data.input, function(x) unique(x))
任何人都可以提出一种直接的方法吗?
非常感谢!
编辑:
感谢您的快速反馈。不幸的是,我不认为以下建议都返回正确答案。这可能是因为我的问题不够清楚和/或我的示例不够充分。
此数据集与我的实际数据更具可比性,尽管为清楚起见我删除了一些列。
df2 <- structure(list(YEAR = structure(c(5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L), .Label = c("2013", "2014", "2015", "2016",
"2017"), class = "factor"), Entry_Number_F = c(3170L, 3182L,
3169L, 3178L, 3169L, 3180L, 3180L, 3170L, 3182L, 3178L, 3170L,
3180L, 3178L, 3169L, 3182L, 3181L, 3181L, 3181L, 3097L, 3097L,
3097L, 3168L, 3168L, 3164L, 3168L, 3164L, 3164L, 3097L, 3164L,
3168L, 3169L, 3170L, 3178L, 3180L, 3181L, 3182L, 3180L, 3182L,
3180L, 3182L, 3169L, 3178L, 3170L, 3182L, 3169L, 3097L, 3178L,
3170L, 3181L, 3169L, 3170L, 3178L, 3181L, 3180L, 3181L, 3168L,
3164L, 3097L, 3097L, 3164L, 3168L, 3168L, 3164L, 3097L, 3164L,
3168L, 3169L, 3170L, 3178L, 3180L, 3181L, 3182L, 3182L, 3182L,
3178L, 3168L, 3170L, 3170L, 3178L, 3169L, 3181L, 3169L, 3097L,
3168L, 3182L, 3164L, 3097L, 3178L, 3169L, 3181L, 3180L, 3164L,
3181L, 3164L, 3097L, 3168L, 3180L, 3170L, 3180L, 3097L, 3164L,
3168L, 3169L, 3170L, 3178L, 3180L, 3181L, 3182L, 3170L, 3181L,
3182L, 3169L, 3180L, 3169L, 3169L, 3182L, 3170L, 3180L, 3182L,
3180L, 3170L, 3168L, 3181L, 3178L, 3097L, 3178L, 3168L, 3178L,
3164L, 3097L, 3097L, 3181L, 3164L, 3168L, 3164L, 3097L, 3164L,
3168L, 3169L, 3170L, 3178L, 3180L, 3181L, 3182L, 3170L, 3170L,
3169L, 3169L, 3164L, 3178L, 3178L, 3170L, 3097L, 3168L, 3177L,
3097L, 3178L, 3164L, 3168L, 3097L, 3164L, 3168L, 3169L, 3177L,
3179L, 3177L, 3179L, 3179L, 3097L, 3164L, 3168L, 3169L, 3170L,
3177L, 3178L, 3179L, 3169L, 3169L, 3178L, 3178L, 3170L, 3170L,
3170L, 3170L, 3178L, 3177L, 3169L, 3168L, 3168L, 3178L, 3097L,
3168L, 3177L, 3177L, 3164L, 3097L, 3097L, 3164L, 3177L, 3097L,
3164L, 3164L, 3179L, 3179L, 3179L, 3168L, 3169L, 3179L, 3170L,
3169L, 3170L, 3178L, 3169L, 3178L, 3169L, 3178L, 3097L, 3170L,
3097L, 3097L, 3177L, 3177L, 3177L, 3164L, 3164L, 3168L, 3168L,
3164L, 3168L, 3179L, 3179L, 3179L, 3097L, 3164L, 3168L, 3169L,
3170L, 3177L, 3178L, 3179L, 3169L, 3178L, 3170L, 3169L, 3097L,
3178L, 3170L, 3170L, 3169L, 3178L, 3168L, 3164L, 3177L, 3177L,
3097L, 3168L, 3168L, 3097L, 3177L, 3164L, 3164L, 3097L, 3164L,
3168L, 3169L, 3170L, 3177L, 3178L, 3179L)), .Names = c("YEAR",
"Entry_Number_F"), class = "data.frame", row.names = c(181L,
182L, 183L, 184L, 185L, 186L, 187L, 188L, 189L, 190L, 191L, 192L,
193L, 194L, 195L, 196L, 197L, 198L, 199L, 200L, 201L, 202L, 203L,
204L, 205L, 206L, 207L, 208L, 209L, 210L, 211L, 212L, 213L, 214L,
215L, 216L, 552L, 553L, 554L, 555L, 556L, 557L, 558L, 559L, 560L,
561L, 562L, 563L, 564L, 565L, 566L, 567L, 568L, 569L, 570L, 571L,
572L, 573L, 574L, 575L, 576L, 577L, 578L, 579L, 580L, 581L, 582L,
583L, 584L, 585L, 586L, 587L, 984L, 985L, 986L, 987L, 988L, 989L,
990L, 991L, 992L, 993L, 994L, 995L, 996L, 997L, 998L, 999L, 1000L,
1001L, 1002L, 1003L, 1004L, 1005L, 1006L, 1007L, 1008L, 1009L,
1010L, 1011L, 1012L, 1013L, 1014L, 1015L, 1016L, 1017L, 1018L,
1019L, 1357L, 1358L, 1359L, 1360L, 1361L, 1362L, 1363L, 1364L,
1365L, 1366L, 1367L, 1368L, 1369L, 1370L, 1371L, 1372L, 1373L,
1374L, 1375L, 1376L, 1377L, 1378L, 1379L, 1380L, 1381L, 1382L,
1383L, 1384L, 1385L, 1386L, 1387L, 1388L, 1389L, 1390L, 1391L,
1392L, 4139L, 4140L, 4141L, 4142L, 4143L, 4144L, 4145L, 4146L,
4147L, 4148L, 4149L, 4150L, 4151L, 4152L, 4153L, 4154L, 4155L,
4156L, 4157L, 4158L, 4159L, 4160L, 4161L, 4162L, 4163L, 4164L,
4165L, 4166L, 4167L, 4168L, 4169L, 4170L, 4444L, 4445L, 4446L,
4447L, 4448L, 4449L, 4450L, 4451L, 4452L, 4453L, 4454L, 4455L,
4456L, 4457L, 4458L, 4459L, 4460L, 4461L, 4462L, 4463L, 4464L,
4465L, 4466L, 4467L, 4468L, 4469L, 4470L, 4471L, 4472L, 4473L,
4474L, 4475L, 4968L, 4969L, 4970L, 4971L, 4972L, 4973L, 4974L,
4975L, 4976L, 4977L, 4978L, 4979L, 4980L, 4981L, 4982L, 4983L,
4984L, 4985L, 4986L, 4987L, 4988L, 4989L, 4990L, 4991L, 4992L,
4993L, 4994L, 4995L, 4996L, 4997L, 4998L, 4999L, 5409L, 5410L,
5411L, 5412L, 5413L, 5414L, 5415L, 5416L, 5417L, 5418L, 5419L,
5420L, 5421L, 5422L, 5423L, 5424L, 5425L, 5426L, 5427L, 5428L,
5429L, 5430L, 5431L, 5432L, 5433L, 5434L, 5435L, 5436L, 5437L
))
我们现在可以在每个子集中看到独特的条目。
unique(df2.2017$Entry_Number_F)
unique(df2.2016$Entry_Number_F)
以上说明:
2017 年有 9 个独特的条目2016 年有 8 个独特的条目他们共享 6 个独特的条目。因此:6/11 = 0.6666667
下面的代码也会返回这个数字。
length(Reduce(intersect, list(df2.2017$Entry_Number_F, unique(df2.2016$Entry_Number_F))))/length(unique(df2.2017$Entry_Number_F))
这会让我的问题更清楚吗?由于篇幅限制,我无法提供更多数据,但如果我有更多年份,我将如何比较所有年份?
示例 here ,使用 crossprod(table(stack(l))) 似乎是可能的,但我不确定如何将每年的唯一条目列表放入列表中。
一位教 R 的同事说“expand.grid、outer 和 lapply 可能是可行的方法。”但他没有时间详细说明。
最佳答案
这不会给出与您的输出相同的答案,但也许它确实是您想要的。使用 length(y)
代替 length(x)
如果你想要转置并使用 s <- rev(s)
如果您希望年份以相反的顺序出现。
prop <- function(x, y) length(intersect(x, y)) / length(x)
s <- with(unique(df), split(Entry_Number_F, YEAR))
outer(s, s, Vectorize(prop))
给予:
2013 2014 2015 2016 2017
2013 1.0000000 0.8000000 0.8000000 0.8000000 0.8000000
2014 0.8000000 1.0000000 1.0000000 1.0000000 1.0000000
2015 0.3636364 0.4545455 1.0000000 0.4545455 0.5454545
2016 0.5000000 0.6250000 0.6250000 1.0000000 0.8750000
2017 0.3636364 0.4545455 0.5454545 0.6363636 1.0000000
关于r - 在 R 中,如何轻松返回类别组合之间的共同唯一元素的比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50066323/
我有一个 mysql 表,其中包含一些随机数字组合。为简单起见,以下表为例: index|n1|n2|n3 1 1 2 3 2 4 10 32 3 3 10 4 4
我有以下代码: SELECT sdd.sd_doc_classification, sdd.sd_title, sdd.sd_desc, sdr.sd_upl
如果我有两个要合并的数据框 Date RollingSTD 01/06/2012 0.16 01/07/2012 0.18 01/08/2012 0.17 01/09/20
我知道可以使用 lein ring war 创建一个 war 文件,但它似乎仍然包含码头依赖项。当我构建 war (并在 tomcat 上部署)时,有没有办法排除码头依赖项? 如果我根本不能做这件事,
维基百科关于封装的文章指出: “封装还通过防止用户将组件的内部数据设置为无效或不一致的状态来保护组件的完整性” 我在一个论坛上开始讨论封装,在那里我问你是否应该始终在 setter 和/或 gette
对于我使用的组合框内的复选框: AOEDComboAssociationName = new Ext.form.ComboBox({ id: 'AOEDComboAssociationName',
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How do I combine LINQ expressions into one? public boo
如何在 rust 中找到排列或组合的数量? 例如C(10,6) = 210 我在标准库中找不到这个函数,也找不到那里的阶乘运算符(这就足够了)。 最佳答案 以@vallentin 的回答为基础,可以进
我有一个复杂的泛型类型用例,已在下面进行了简化 trait A class AB extends A{ val v = 10 } trait X[T<:A]{ def request: T }
如何使用 Hibernate 限制来实现此目的? (((A='X') and (B in('X',Y))) or ((A='Y') and (B='Z'))) 最佳答案 思考有效 Criteria c
我一定会在我的一个项目中使用谷歌图表。我需要的是,显示一个条形图,并且在条形图中,与每个条形相交的线代表另一个值。如果您查看下面的 jsfiddle,您会发现折线图仅与中间的条形图相交,并继续向其他条
只是一个简单的问题,我也很想得到答案,因为我不能百分百理解 Javascript 示例:假设您提示用户输入名称。够简单吧?但是你有一个数组,上面写着一些名字(其中之一就是),基本上就是我到目前为止所说
我试图通过 Haskell 理解函数式编程,但在处理函数组合时遇到了很多麻烦。 其实我有这两个功能: add:: Integer -> Integer -> Integer add x y = x
我正在寻找一种在 Realm 查询中组合 AND 和 OR 的方法。 这是我的课: class Event extends RealmObject { String id; String
例如,我有一个包含 5 个元素的哈希: my_hash = {a: 'qwe', b: 'zcx', c: 'dss', d: 'ccc', e: 'www' } 我的目标是每次循环哈希时都返回,但没
我是Combine 的新手,我想得到一个看似简单的东西。假设我有一个整数集合,例如: let myCollection = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 我想以例如 0
关于“优先组合而不是继承”的问题,我的老师是这样说的: 组合:现有类成为新类的组件 转发:新类中的每个实例方法,在现有类的包含实例上调用相应的方法并返回结果 包装器:新类封装了现有的 这三个概念我不是
我正在尝试将单个整数从 ASCII 值转换为 0 和 1。相关代码如下所示: int num1 = bin.charAt(0); int num2 = bin.charAt(1);
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 7 年前。 我经常看到“嵌套”类中的非静态变
我尝试合并两个数据集(DataFrame),如下所示: D1 = pd.DataFrame({'Village':['Ampil','Ampil','Ampil','Bachey','Bachey',
我是一名优秀的程序员,十分优秀!