r - 重新排列多列数据框
问题描述
我想按如下方式重新排列我的数据框:前 3 列必须附加在另一列下方以及第二 3 列。必须根据数据框重新排列来保留 ID 和 Class 列。
起始数据框 IDdf
set.seed(1)
df <- data.frame(ID = rep(c("CT1", "CT2", "CT3", "SB1", "SB2","SB3","AM1", "AM2", "AM3")),
Class = rep(c("CT", "SB", "AM"), each = 3),
replicate(6,sample(0:100,9,rep=TRUE)))
输出是df2
set.seed(1)
df2 <- data.frame(ID = c(rep(c("CT1", "CT2", "CT3", "SB1", "SB2","SB3","AM1", "AM2", "AM3" ), times=3)),
Class = rep(rep(c("CT", "SB", "AM"), each= 3), times=3),
replicate(2,sample(0:100,27,rep=TRUE)))
我尝试了几种使用merge
byid.vars
ID
和Class
解决方案
我们可能会使用
data.frame(df[, c("ID", "Class")], X1 = unlist(df[, 3:5]), X2 = unlist(df[, 6:8]))
# ID Class X1 X2
# X11 CT1 CT 26 38
# X12 CT2 CT 37 87
# X13 CT3 CT 57 34
# X14 SB1 SB 91 48
# X15 SB2 SB 20 60
# X16 SB3 SB 90 49
# ...
前两列通过回收扩展,而另外两列则使用unlist
. 如果这是您的实际问题并且没有数百个这样的三元组,那么在这种情况下实际上不需要花哨的东西。
推荐阅读
- android - 支持 Action Bar 仅在一个片段中可见
- java - libgdx:getCell() 方法返回 null
- javascript - 一键式按钮适用于大屏幕,但在手机设备上只有双击有效
- java - IllegalArgumentException:在为“XML 解析器不应易受 XXE 攻击”实施 sonarqube 解决方案时不支持
- sql-server - 从 XML 的所有路径中获取键的值
- javascript - 如何监视命名函数?
- r - 获取 read.csv 中与 write.csv 中相同的文件名
- swift - swift中集合视图单元格内的按钮操作
- json - 在 AppModule 中阅读 Appsetting - Angular 8
- amazon-web-services - Amazon Pinpoint 彩信通知?