gpt4 book ai didi

r - R:将多列合并为一组(在同一数据框中两次)

转载 作者:行者123 更新时间:2023-12-04 09:22:18 24 4
gpt4 key购买 nike

所以我有一个看起来像这样的数据框:

      Day HL.Average D.Average LL.Average noHKB.Average    HL.SD      D.SD    LL.SD noHKB.SD
1 0.00000 8760 8900 10000 8030 2337.844 924.2742 1120.785 1592.646
2 1.90625 13300 11900 12100 3860 1016.291 2308.2661 3581.763 1031.057
3 3.00000 14500 7320 12300 1750 2945.098 1308.0389 4338.897 1793.583
4 4.00000 16200 9160 15100 2710 1006.893 514.2177 4362.261 2691.648

我正在尝试将其组织成这样:

(此表中的数字略有不同,因为我改用excel制作了此表...)
Day Group   Average SD
0 HL 8.76E+03 2337.843612
2 HL 1.33E+04 1016.291341
3 HL 1.45E+04 2945.098059
4 HL 1.62E+04 1006.892976
0 LL 1.00E+04 1120.785009
2 LL 1.21E+04 3581.762692
3 LL 1.23E+04 4338.897375
4 LL 1.51E+04 4362.260616
0 D 8.90E+03 924.2741667
2 D 1.19E+04 2308.266118
3 D 7.32E+03 1308.038881
4 D 9.16E+03 514.2176747

我考虑过使用stack()然后合并(),但是问题是我原来的“xx.Average”和“xx.SD”标题使堆栈中的结果ind复杂化了...

有谁知道用于轻松组织数据的命令/方式?

非常感谢!

最佳答案

@ ananda-mahto的splitstackshape软件包就是针对这种类型的问题而设计的!

不幸的是,它期望变量名是前缀而不是后缀,因此我们首先需要反转变量名

library(splitstackshape)
# reverse variable names:
names(df) <- sapply(strsplit(names(df), "\\."), function(x) paste(rev(x), collapse="."))
# Reshape the data frame:
newdf <- merged.stack(df, id.vars=c("Day"), var.stubs=c("Average", "SD"), sep=".")
setnames(newdf, ".time_1", "Group")
newdf
## Day Group Average SD
## 1: 0.00000 D 8900 924.2742
## 2: 0.00000 HL 8760 2337.8440
## 3: 0.00000 LL 10000 1120.7850
## 4: 0.00000 noHKB 8030 1592.6460
## 5: 1.90625 D 11900 2308.2661
## 6: 1.90625 HL 13300 1016.2910
## 7: 1.90625 LL 12100 3581.7630
## 8: 1.90625 noHKB 3860 1031.0570
## 9: 3.00000 D 7320 1308.0389
## 10: 3.00000 HL 14500 2945.0980
## 11: 3.00000 LL 12300 4338.8970
## 12: 3.00000 noHKB 1750 1793.5830
## 13: 4.00000 D 9160 514.2177
## 14: 4.00000 HL 16200 1006.8930
## 15: 4.00000 LL 15100 4362.2610
## 16: 4.00000 noHKB 2710 2691.6480

关于r - R:将多列合并为一组(在同一数据框中两次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31799009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com