我搜索了几个答案,但似乎没有人能回答我的问题
我的数据看起来像这样(2列,2组,组“1”和组“2”)
我希望每个组从一列到另一列转置它 结果将如下所示
由于我有很多小组,我不能一个一个地手动完成。有人可以帮帮我吗?谢谢。
谢谢大家,因为所有小组都有相同的长度(灵感来自Floris的评论),实际上我只需使用矩阵来解决问题
x=read.table(header=F,text="10 20 50 40 30 60")
matrix(x,nrow=2,byrow=T)
答案 0 :(得分:4)
x <- read.table(header=F, text="1 10
1 20
1 50
2 40
2 30
2 60")
do.call(rbind, by(x, x$V1, FUN=t))
## 1 2 3
## V1 1 1 1
## V2 10 20 50
## V1 2 2 2
## V2 40 30 60
答案 1 :(得分:1)
如果您知道如何使用VBA,那么编写一个可以为您执行此操作的短子()非常简单。我很难编码地址 - 你可以弄清楚如何移动它。我假设您在调用此宏时,您的数据在活动工作表上,并且您希望副本显示在原始工具的右侧(在A列和B列中,从第2行开始 - 为上面的标签提供空间)。此外,我将假设您的组编号为1,2,3 ......并且您不需要复制它们的值。然后代码看起来像这样(按F-11打开VBA编辑器,插入模块,然后复制)
Sub bigSwap()
dim R as Range, c as Range
dim grp
dim grpCount(1 To 100) ' assuming no more than 100 groups, or adjust this number
dim i
' just making sure it's properly initialized
for i=1 To 100
grpCount(ii)=0
next i
Set R = Range("B2", [B2].End(xlDown)) ' this finds all the cells with values
' note - I am using [B2] as shorthand for Range("B2")
For each c in R.cells
grp = c.offset(0, -1).value ' find the corresponding group
[D1].offset(grp, grpCount(grp)).value = c.value
grpCount(grp) = grpCount(grp)+1 ' keep track of # in this row
next
End Sub
我无法测试这个,但我相信这很好。如果您遇到问题,请发表评论。
答案 2 :(得分:0)
将单元格的集群从列转移到行
假设A2:A16包含数据,请尝试...
C2,横向和向下复制:
=INDEX($A$2:$A$16,ROWS(C$2:C2)*3-3+COLUMNS($C2:C2))
相应地调整参考文献。
首先尝试一行然后执行下一行,然后合并