2015-10-20 34 views
1

我有一個data.table既寬又長,也稀疏。這是最簡單的例子:整形R data.table是寬和長(和稀疏)

Row Val1 Val2 
1 1 
2  1 

從廣角至長收率重塑:

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

從長重塑(指數是隱式的基於非缺失的行,在這種情況下的行號),以寬的產率:

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

我要的是:

Row Idx Val 
1 1 1 
2 2 1 

缺少值在結構上缺失,應該丟棄。

數據集非常複雜(400列以上);它來自一項調查,其中六個不同的案例以六種不同的方式複製了一個問題,根據案例選擇性地填充了答案。每個問題有六個二進制答案,製作36列。這些需要摺疊成代表八個唯一二進制答案的八列,以及一個標識該案例的新列。

還有其他幾個類似的問題,所以我需要找到一個算法來做到這一點,我沒有詞彙來解釋它給谷歌。什麼是正確的方法來做到這一點?

回答

0

嘗試

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