作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大型数据表,其结构与此可重现示例类似:
d <- data.table(
g =c(1 ,1 ,2 ,2 ,2 ,3 ,3 , 4 , 4),
A =c('a','a','b','b','w','c','q','r','r'),
B =c(1 ,1 ,2 ,2 ,2 ,3 ,3 ,4 , 5),
sameA =c(T , T , F , F , F , F , F , T , T),
sameAB=c(T , T , F , F , F , F , F , F , F)
)
g
表示群体,A
和B
是个体特征。我想创建变量:
sameA
:表示 A 对于该组的所有观察值都是相同的sameAB
:表示 A 和 B 对于该组的所有观测值都是相同的如何使用 data.table 有效地做到这一点?
最佳答案
也许你可以试试这个。使用 uniqueN
确定每组唯一值的数量(使用 by = g
),并与 1 进行比较。
library(data.table)
d[, c("sameAnew", "saveABnew") := list(uniqueN(A) == 1, uniqueN(A) == 1 & uniqueN(B) == 1), by = g]
或者按照 @jangorecki 的建议,创建一个用大括号 {} 抑制的临时变量,以避免重复 uniqueN(A)
:
d[, c("sameAnew", "saveABnew") := {tmp <- uniqueN(A); list(tmp == 1, tmp == 1 & uniqueN(B) == 1)}, by = g]
输出
g A B sameA sameAB sameAnew saveABnew
1: 1 a 1 TRUE TRUE TRUE TRUE
2: 1 a 1 TRUE TRUE TRUE TRUE
3: 2 b 2 FALSE FALSE FALSE FALSE
4: 2 b 2 FALSE FALSE FALSE FALSE
5: 2 w 2 FALSE FALSE FALSE FALSE
6: 3 c 3 FALSE FALSE FALSE FALSE
7: 3 q 3 FALSE FALSE FALSE FALSE
8: 4 r 4 TRUE FALSE TRUE FALSE
9: 4 r 5 TRUE FALSE TRUE FALSE
关于r - 标记 data.table 的某些列中具有相同行的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62475013/
在我的 android 应用程序中,我想在同一行中实现 2 个文本字段。如果文本太长可以转到下一行。所以我使用了更精简的水平布局并添加了 2 个文本字段。 [例如:TextView1、TextV
由于node使用了javascript,它可以充当webrtc peer吗? 然后我可以将它编码为 VP8 流并广播给所有其他对等方吗? 最佳答案 WebRTC 是一个浏览器 API 而不是 Java
我是一名优秀的程序员,十分优秀!