1
我有一個高大MATLAB table這樣的:如何使用MATLAB中的複製從高到寬格式高效地轉換表格?
spam =
Data cat1 cat2 time
__________ ___________ __________ ______
-0.41763 1 0 0
0.11719 1 0 0
... ... ... ...
-0.16546 1 0 1
... ... ... ...
-0.21763 1 0 2
0.31719 2 0 0
... ... ... ...
0.58116 3 1 0
... ... ... ...
Data
是雙格式的,cat1
(8級)和cat2
(3電平)是分類,和time
(3個電平)是順序(但也可以是雙)。每個cat1
和cat2
級別的每個時間點包括30個(技術)重複(上面表示爲...
)。
我希望使用這些數據在fitrm
,這需要他們在廣泛的格式。因此我需要將Data
列轉換爲三個單獨的變量。
使用unstack
我得到的是這樣的:
spam = unstack(spam, 'Data', 'time')
Warning: Variable names were modified to make them valid MATLAB identifiers.
spam =
cat1 cat2 x0 x1 x2
______ _________ ___________ _______ ________
1 0 -7.6605e-15 2.3168 0.45234
2 0 6.2172e-15 5.1661 24.89
3 1 8.8818e-16 56.697 40.441
4 1 -7.9936e-15 -22.741 -17.191
5 1 -1.4433e-15 -7.7803 -20.817
6 2 5.5511e-16 7.8535 -0.21172
7 2 5.3291e-15 13.658 5.8402
8 2 2.2204e-15 9.1739 13.814
顯然,這結果不包括在高大的表中的所有信息。 具體而言,重複未被帶到結果。
使用accumarray
,與in another stack page顯示的類似方式可能是有希望的,但在我看來,手動執行一次轉換似乎更容易。
有人知道更有效的方法嗎?
如果你要自己回答你的問題,它需要的不僅僅是一個鏈接到另一個答案更多的信息。 –
感謝您通知禮儀@AnderBiguri。我在答案中添加了一個例子。 – vkehayas