我有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解释。这样做的正确方法是什么?
答案 0 :(得分:0)
尝试
setDT(df1)[,list(Idx=which.max(.SD), Val=1) , Row]
# Row Idx Val
#1: 1 1 1
#2: 2 2 1