gpt4 book ai didi

R:我如何为每个级别(用于 reshape )创建一个带有订单数(按日期)的新变量。)

转载 作者:行者123 更新时间:2023-12-01 23:42:45 25 4
gpt4 key购买 nike

我是 R 的新手,我必须处理大型数据集。我在谷歌上搜索了很多,但我就是找不到做我需要做的事情的方法(尽管这听起来很容易)。

我想做的是以广泛的形式 reshape 我的数据。要按照我想要的方式进行操作,我需要一个新变量,其中包含每个因素的按日期排序的数量(每个新因素将从一个开始)。

现在,这是我所拥有的一个小例子:

ID<-c("A","A","A","B","B","C","D","D","D","D")

Date<-c("01-01-2014", "05-01-2014", "06-01-2014",
"01-01-2014", "12-01-2014", "25-01-2014",
"06-01-2014", "12-01-2014", "25-01-2014",
"26-01-2014")

Value<-c(2.5, 3.4, 2.5, 305.66, 300.00, 55.01,
205.32, 99.99, 210.25, 105.125)

mydata<-data.frame(ID, Date, Value)
mydata

ID Date Value
1 A 01-01-2014 2.500
2 A 05-01-2014 3.400
3 A 06-01-2014 2.500
4 B 01-01-2014 305.660
5 B 12-01-2014 300.000
6 C 25-01-2014 55.010
7 D 06-01-2014 205.320
8 D 12-01-2014 99.990
9 D 25-01-2014 210.250
10 D 26-01-2014 105.125

(数据集首先按 ID 因素排序,而不是按每个因素的日期排序。)

这就是我需要的:名为“Order”的新变量。

   ID       Date   Value Order
1 A 01-01-2014 2.500 1
2 A 05-01-2014 3.400 2
3 A 06-01-2014 2.500 3
4 B 01-01-2014 305.660 1
5 B 12-01-2014 300.000 2
6 C 25-01-2014 55.010 1
7 D 06-01-2014 205.320 1
8 D 12-01-2014 99.990 2
9 D 25-01-2014 210.250 3
10 D 26-01-2014 105.125 4

最终目标是根据变量“Order” reshape 数据,如下所示:

library(reshape)
goal<-reshape(mydata2,
idvar="ID",
timevar="Order",
direction="wide")
goal

ID Date.1 Value.1 Date.2 Value.2 Date.3 Value.3 Date.4 Value.4
1 A 01-01-2014 2.50 05-01-2014 3.40 06-01-2014 2.50 <NA> NA
4 B 01-01-2014 305.66 12-01-2014 300.00 <NA> NA <NA> NA
6 C 25-01-2014 55.01 <NA> NA <NA> NA <NA> NA
7 D 06-01-2014 205.32 12-01-2014 99.99 25-01-2014 210.25 26-01-2014 105.125

或者是否有另一种方法可以在没有“Order”变量的情况下像这样 reshape 数据?

最佳答案

这正是我的“splitstackshape”包中的 getanID 函数的用途:

> library(splitstackshape)
> getanID(mydata, "ID")
ID Date Value .id
1: A 01-01-2014 2.500 1
2: A 05-01-2014 3.400 2
3: A 06-01-2014 2.500 3
4: B 01-01-2014 305.660 1
5: B 12-01-2014 300.000 2
6: C 25-01-2014 55.010 1
7: D 06-01-2014 205.320 1
8: D 12-01-2014 99.990 2
9: D 25-01-2014 210.250 3
10: D 26-01-2014 105.125 4

或者,您可以探索“data.table”的开发版本,它以非常灵活的方式重新实现了 dcast,使您无需生成“时间”变量即可执行此转换。

关于R:我如何为每个级别(用于 reshape )创建一个带有订单数(按日期)的新变量。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556238/

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