如果值不存在,则转换为宽格式并设置为0

时间:2018-05-10 10:34:06

标签: r reshape reshape2 melt

我有以下数据集:

dataset1 <- data.frame(
        bnames = c("T1", "T1", "T2", "T3", "T3"),
        events = c("I", "O", "I", "I", "O"),
        freq = c(1,2,3,4,5))

我想将此数据集转换为宽格式,我的方法(使用reshape包):

dataset2 <- melt(dataset1, id.vars = c("bnames", "events"))
dataset2 <- dataset2[c("bnames", "events", "value")]
names(dataset2) <- c("bnames", "events", "freq")

dataset2的内容:

  bnames events freq
1     T1      I    1
2     T1      O    2
3     T2      I    3
4     T3      I    4
5     T3      O    5

bnames列下应始终有两行具有相同的名称。在I列下有一行O而另一行events。如果原始数据集(dataset1)中不存在相应的值,则freq下的值应始终为0.因此,在这种情况下,我期望的结果应为:

  bnames events freq
1     T1      I    1
2     T1      O    2
3     T2      I    3
4     T2      O    0
5     T3      I    4
6     T3      O    5

怎么做?感谢

1 个答案:

答案 0 :(得分:0)

这是一个$('button#loginModal-password-reset_button').bind('click', function() { $('#loginModal').modal('hide'); setTimeout(function(){ $('#password-resetModal').modal('show'); }, 1000); }); 解决方案。生成所有可能的bnames和事件排列,将此集合与原始数据集连接,并返回频率(如果可用,则设置为0)。

data.table