我有以下数据表
var open = $('.open'),
a = $('ul').find('button');
console.log(a.hasClass('active'));
open.click(function(e){
e.preventDefault();
var $this = $(this),
speed = 500;
if($this.hasClass('active') === true) {
$this.removeClass('active').next('.box').slideUp(speed);
} else if(a.hasClass('active') === false) {
$this.addClass('active').next('.box').slideDown(speed);
} else {
a.removeClass('active').next('.box').slideUp(speed);
$this.addClass('active').next('.box').slideDown(speed);
}
});
我想要的是以下形式的汇总表:
dt<-data.table(string=c("A","A","A","B","B","C"), source=c("a","b","c","a","b","a"), N=rep(1,6))
string source N
1: A a 1
2: A b 1
3: A c 1
4: B a 1
5: B b 1
6: C a 1
这意味着,我想删除带有N源的列,但是请将此信息保存在一个新列中,该列包含来自源a | b | c的信息。问题是如果我们在原始dt中没有这些信息,我不知道如何添加缺失的0。
如果我尝试代码
string a_b_c
1: A 1|1|1
2: B 1|1|0
3: C 1|0|0
,我得到这样的话:
dt <- dt[, paste(N, collapse="|"), by = string]
非常感谢你的帮助!
答案 0 :(得分:1)
那样的东西?不像评论中的一个班轮那样整洁。 (使用已经使用的dplyr和data.table)
dt2 <- dt %>%
data.table::dcast(string ~ source) %>%
mutate(a_b_c = paste(a, b, c, sep="|")) %>%
select(string, a_b_c)
给予
string a_b_c
1 A 1|1|1
2 B 1|1|0
3 C 1|0|0
答案 1 :(得分:1)
library(data.table)
dcast(dt,string~source,fill=0,value.var = "N")[,paste0(.SD,collapse = "|"),by=string]
string V1
1: A 1|1|1
2: B 1|1|0
3: C 1|0|0