我正在尝试使用 R 中的 reshape 函数在表中排列我的数据时间点。我用来分割它的变量是数字的,但是当 reshape 排列表格时,它错误地放置了 2,0.5,4,6,8,0,24...168,而不是 0.0 , 0.5 , 2.0 , 4.0 , 6.0 、8.0、24.0、48.0...168.0
非常感谢任何帮助。 这是我的数据:
>G2
Animal Sex Time Sugar
1 2001 M 2.0 5880
2 2001 M 0.5 95
3 2001 M 4.0 25100
4 2001 M 6.0 68500
5 2001 M 8.0 110000
6 2001 M 0.0 NA
7 2001 M 24.0 336000
8 2001 M 48.0 476000
9 2001 M 72.0 413000
10 2001 M 96.0 368000
11 2001 M 120.0 332000
12 2001 M 144.0 282000
13 2001 M 168.0 271000
14 2002 M 2.0 13200
15 2002 M 0.5 356
16 2002 M 4.0 55700
17 2002 M 6.0 121000
18 2002 M 8.0 216000
19 2002 M 0.0 NA
20 2002 M 24.0 529000
21 2002 M 48.0 554000
22 2002 M 72.0 468000
23 2002 M 96.0 408000
24 2002 M 120.0 354000
25 2002 M 144.0 348000
26 2002 M 168.0 290000
27 2003 M 2.0 20500
28 2003 M 0.5 1190
29 2003 M 4.0 43800
30 2003 M 6.0 90500
31 2003 M 8.0 142000
32 2003 M 0.0 NA
33 2003 M 24.0 401000
34 2003 M 48.0 485000
35 2003 M 72.0 393000
36 2003 M 96.0 386000
37 2003 M 120.0 335000
38 2003 M 144.0 289000
39 2003 M 168.0 247000
40 2501 F 2.0 6630
41 2501 F 0.5 305
42 2501 F 4.0 28900
43 2501 F 6.0 67300
44 2501 F 8.0 138000
45 2501 F 0.0 NA
46 2501 F 24.0 395000
47 2501 F 48.0 474000
48 2501 F 72.0 390000
49 2501 F 96.0 330000
50 2501 F 120.0 318000
51 2501 F 144.0 258000
52 2501 F 168.0 238000
53 2502 F 2.0 2140
54 2502 F 0.5 NA
55 2502 F 4.0 15700
56 2502 F 6.0 69200
57 2502 F 8.0 125000
58 2502 F 0.0 NA
59 2502 F 24.0 478000
60 2502 F 48.0 500000
61 2502 F 72.0 471000
62 2502 F 96.0 407000
63 2502 F 120.0 414000
64 2502 F 144.0 352000
65 2502 F 168.0 462000
66 2503 F 2.0 32400
67 2503 F 0.5 6290
68 2503 F 4.0 78800
69 2503 F 6.0 119000
70 2503 F 8.0 160000
71 2503 F 0.0 NA
72 2503 F 24.0 328000
73 2503 F 48.0 463000
74 2503 F 72.0 429000
75 2503 F 96.0 381000
76 2503 F 120.0 389000
77 2503 F 144.0 339000
78 2503 F 168.0 327000
我正在做这个:
G2r = reshape(G2, direction = "wide",
idvar = c("Animal","Sex"),
times = Time,
timevar = "Time"
)
我明白了:
> head(G2r)
Animal Sex Sugar.2 Sugar.0.5 Sugar.4 Sugar.6 Sugar.8 Sugar.24 Sugar.48 Sugar.72 Sugar.96 Sugar.120 Sugar.144 Sugar.168
1 2001 M 5880 95 25100 68500 110000 336000 476000 413000 368000 332000 282000 271000
13 2002 M 13200 356 55700 121000 216000 529000 554000 468000 408000 354000 348000 290000
25 2003 M 20500 1190 43800 90500 142000 401000 485000 393000 386000 335000 289000 247000
37 2501 F 6630 305 28900 67300 138000 395000 474000 390000 330000 318000 258000 238000
49 2502 F 2140 NA 15700 69200 125000 478000 500000 471000 407000 414000 352000 462000
60 2503 F 32400 6290 78800 119000 160000 328000 463000 429000 381000 389000 339000 327000
我尝试对时间进行排序并将其设置为 times = sort(unique(G2$Time)),但它不起作用。 我还尝试了 na.omit(Time) 和 na.omit(Sugar) 以防 NA 产生问题。但也没有成功。
如果您对进入
reshape()
的数据进行排序,它应该会得到您需要的结果。
G2[order(G2$Animal, G2$Sex, G2$Time), ]
是按所需顺序排列的数据框。
G2r = reshape(G2[order(G2$Animal, G2$Sex, G2$Time), ], direction = "wide",
idvar = c("Animal","Sex"),
times = Time,
timevar = "Time"
)
G2r
# Animal Sex Sugar.0 Sugar.0.5 Sugar.2 Sugar.4 Sugar.6 Sugar.8 Sugar.24
# 6 2001 M NA 95 5880 25100 68500 110000 336000
# 19 2002 M NA 356 13200 55700 121000 216000 529000
# 32 2003 M NA 1190 20500 43800 90500 142000 401000
# 45 2501 F NA 305 6630 28900 67300 138000 395000
# 58 2502 F NA NA 2140 15700 69200 125000 478000
# 71 2503 F NA 6290 32400 78800 119000 160000 328000
# Sugar.48 Sugar.72 Sugar.96 Sugar.120 Sugar.144 Sugar.168
# 6 476000 413000 368000 332000 282000 271000
# 19 554000 468000 408000 354000 348000 290000
# 32 485000 393000 386000 335000 289000 247000
# 45 474000 390000 330000 318000 258000 238000
# 58 500000 471000 407000 414000 352000 462000
# 71 463000 429000 381000 389000 339000 327000