重塑R data.table既宽又长(又稀疏)

时间:2015-10-20 06:25:52

标签: r data.table

我有data.table,既宽又长,也稀疏。这是最简单的例子:

Row Val1 Val2
1   1
2        1

从广泛到长期的产量重塑:

Row Idx Val
1   1   1
1   2
2   1
2   2   1

从long重构(索引是基于非缺失行隐式的,在本例中是行数),以获得广泛的收益:

Row Val1.1 Val2.1 Val1.2 Val2.2
1   1                    1

我想要的是:

Row Idx Val
1   1   1
2   2   1

缺少值在结构上缺失,应该被丢弃。

数据集非常复杂(400多列);这是一项调查,其中一个问题以六种不同的方式复制到六种不同的案例中,并根据案例选择性地填写答案。每个问题有六个二进制答案,共36列。这些需要折叠成代表八个唯一二进制答案的八列,以及一个标识案例的新列。

还有其他几个类似问题的问题,所以我需要找到一个算法来做这个,而且我没有词汇来向Google解释。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试

setDT(df1)[,list(Idx=which.max(.SD), Val=1) , Row]
#   Row Idx Val
#1:   1   1   1
#2:   2   2   1