R中的数据转换-按ID分组变量

R中的数据转换-按ID分组变量,r,reshape,R,Reshape,我相信这是一个简单的问题,但我不确定该搜索什么或如何解决它 我的数据如下所示: Date UserID Var1 Var2 2013-01 1 2 3 2013-02 1 2 1 etc. 其中记录的日期对于每个用户都是不同的 我想找到关于其中一个变量的统计信息(比如Var2),为了做到这一点,我想重塑数据,以便输出类似于: ID Time1 Time2 Time3 ... 1 3 1

我相信这是一个简单的问题,但我不确定该搜索什么或如何解决它

我的数据如下所示:

Date     UserID   Var1   Var2
2013-01  1        2      3
2013-02  1        2      1
etc.
其中记录的日期对于每个用户都是不同的

我想找到关于其中一个变量的统计信息(比如Var2),为了做到这一点,我想重塑数据,以便输出类似于:

ID   Time1   Time2   Time3   ...
1    3       1       NA
etc.
其中,时间1是用户出现在数据中的第一个日期,时间2是下一个日期,等等。

编辑以处理相对比例上的日期重新对齐

如何使用
重塑

这是为了输入数据:

> zz <- "Date     UserID   Var1   Var2
+ 2013-01  1        2      3
+ 2013-02  1        2      1
+ 2013-02  2        2      1"
> Data <- read.table(text=zz, header = TRUE)
导致:

> Data2
  UserID Var2.2013-01 Var2.2013-02
1      1            3            1
3      2           NA            1
     UserID Var2.2013-01 Var2.2013-02
[1,] 1      3            1           
[2,] 2      1            NA    
(请注意,
c(1,2,4)
指与
日期
用户ID
变量2
相对应的列号)

最后,要获得所需的输出,只需将
NA
移动到每行的末尾:

t(sapply(1:nrow(Data2), function(x) c(Data2[x,!is.na(Data2[x,])],rep(NA,sum(is.na(Data2[x,]))))))
导致:

> Data2
  UserID Var2.2013-01 Var2.2013-02
1      1            3            1
3      2           NA            1
     UserID Var2.2013-01 Var2.2013-02
[1,] 1      3            1           
[2,] 2      1            NA    

请注意,此处的列名不再是最新的。此外,在矩阵的右侧可能有只包含NA的列。。。我将让您处理这些小细节。

您想查找有关变量的统计信息,或者只是重新调整其中一个变量的数据(您的示例就是这样做的)?@rawr-I编辑以澄清。希望这能有所帮助。我想查找统计数据,但我想先进行重塑。@Jealie-类似于此,但数据都是按ID分组的,而不是一次只显示一个ID。您应该查看
restrape2
库。
melt()
函数非常擅长做这类事情。你只需要知道你想要识别哪些变量,哪些是度量变量。唯一的问题是它看起来会按照日期变量对变量2进行分组,对吗?我的目标是让第1列成为useridx的第一个Var2,而不管日期是什么。例如,如果UserID 1的最早记录是在2013-03年,UserID 2的最早记录是在2013-04年,那么这些值仍然会显示在T1列中。我编辑了答案以考虑这一点。这就是你要找的吗?