我正在寻找一种方法来创建一个数据帧,这个数据帧是减去两列数量和列数不等的数据帧的结果。
我创建了以下两个数据框的示例:
R> t1
Link, P1, P2, P3
A, 1, 4, 7
B, 2, 5, 8
C, 3, 6, 9
R> t2
Link, P1, P3, P5
A, 1, 5, 1
C, 2, 6, 3
D, 3, 7, 5
F, 4, 8, 7
结果数据框需要表示公共列和行之间的差异:
R> intersect(names(t1),names(t2))
[1] "Link" "P1" "P3"
R> intersect(t1$Link,t2$Link)
[1] "A" "C"
R> t1 - t2
Link, P1, P3
A, 0, 2
C, 1, 3
我在两个数据框中有很多列/行。我尝试了合并的几个选项没有运气。我正在寻找有关如何继续的想法。
答案 0 :(得分:1)
简单的解决方案:
NoMethodError at /calendars
undefined method `chain' for nil:NilClass
@posts_comments = @user.calendar_post_comments.order("created_at DESC").limit(5)
输出:
import jenkins.model.Jenkins
import hudson.model.User
allUsers = User.getAll()
adminList = []
authStrategy = Jenkins.instance.getAuthorizationStrategy()
for (u in allUsers) {
if (authStrategy.hasPermission(u.toString(), Jenkins.ADMINISTER)) {
adminList.add(u)
}
}
println(adminList)
回答你的评论;假设device_nr在t1和t2中是一致的
rownames(t1)<-t1$Link
rownames(t2)<-t2$Link
col_intersect<-intersect(names(t1),names(t2))
row_intersect<-intersect(t1$Link,t2$Link)
t1[row_intersect,col_intersect[-1]] - t2[row_intersect,col_intersect[-1]]
输出:
P1 P3
A 0 2
C 1 3
答案 1 :(得分:0)
这是一个dplyr解决方案。使用diff
进行长时间聚合,然后再回到广角:
require(dplyr)
require(reshape2)
require(magrittr)
local({
t1$df <- "t1"
t2$df <- "t2"
n <- intersect(names(t1), names(t2))
rbind(t1[n], t2[n])
}) %>%
melt(id.vars=c("Link", "df")) %>%
arrange(Link, variable, desc(df)) %>%
group_by(Link, variable) %>%
filter(length(value) == 2) %>%
summarise(delta = diff(value)) %>%
dcast(Link~variable)