打破数据框并为R

时间:2016-07-21 13:57:46

标签: r dataframe data-manipulation

我有一个这样的数据框:

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 

2 个答案:

答案 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