我有一个这样的数据框:
Values
1
2
3
.
.
1000
我想将其分解为一个包含10列基于行的数据框。因此,行1-100在一列中,行101-200在第二列中,依此类推,得到如下的最终数据集:
Col1 Col2............... Col10
1 101 901
2 102 902
3 103 903
. .
. .
100 200 1000
答案 0 :(得分:1)
这是一种方法:
dfNew <- data.frame(matrix(unlist(df), 100))
names(dfNew) <- paste0("Col", 1:10)
第一行将data.frame强制转换为向量(unlist
),然后强制转换为行长度为100(matrix
)的矩阵。然后将此矩阵转换为data.frame(data.frame
)。
以下是前6行:
head(dfNew)
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10
1 1 101 201 301 401 501 601 701 801 901
2 2 102 202 302 402 502 602 702 802 902
3 3 103 203 303 403 503 603 703 803 903
4 4 104 204 304 404 504 604 704 804 904
5 5 105 205 305 405 505 605 705 805 905
6 6 106 206 306 406 506 606 706 806 906
第二行添加了data.frame名称。
数据强>
df <- data.frame(Values=1:1000)
答案 1 :(得分:1)
另一种方法是使用 do.call 执行和构造来自 rbind 的函数调用,该函数调用采用由 lapply构建的列表序列参数并按列组合
<ribbon startFromScratch="false">
<tabs>
<!-- EXCEL BUILT-IN TABS -->
<tab idMso="TabDeveloper" getVisible="GetVisible">
<group idMso="GroupCode" visible="true"/>
<group idMso="GroupAddins" visible="true"/>
<group idMso="GroupControls" visible="true"/>
<group idMso="GroupXml" visible="true"/>
<group idMso="GroupModify" visible="true"/>
</tab>
</tabs>
</ribbon>
如果您不想使用 paste0 设置列名,可以使用 sprintf
Sub GetVisible(control As IRibbonControl, ByRef MakeVisible)
Select Case control.ID
Case "TabDeveloper": MakeVisible = True
Case "TabHome": MakeVisible = True
Case "TabInsert": MakeVisible = True
Case "TabPageLayoutExcel": MakeVisible = True
Case "TabFormulas": MakeVisible = True
Case "TabData": MakeVisible = True
Case "TabReview": MakeVisible = True
Case "TabView": MakeVisible = True
Case "TabAddIns": MakeVisible = True
Case "TabBackgroundRemoval": MakeVisible = True
End Sub