通过每个ID中的唯一值重塑变量

问题描述:

您好我一直在试图将我的数据重新整形。通过每个ID中的唯一值重塑变量

id story_id 
1 123 
1 123 
1 123 
1 123 
2 213 
2 213 
2 213 
3 123 
3 123 
3 123 

但我得到的是:

id 
1 
2 
3 

我使用的代码:

data=reshape(data, idvar="id", timevar="story_id", direction="wide") 

所需的输出是

id story_id.123 story_id.213 
1 123   NA 
2 NA   213 
3 123   NA 

请让我知道什么问题是。

+0

我已经更新了我的问题@MrFlick –

+3

不会'表(唯一的(数据))'是更理想的选择? 'reshape(unique(data)[,c(1,2,2)],timevar ='story_id.1',v.names ='story_id',dir ='wide')'也可以工作 – rawr

+1

@rawr -you can (变换(唯一(数据),时间= story_id),idvar =“id”,方向=“宽”)。 – thelatemail

以下工作:

library(data.table) ; setDT(DF) 

dcast(unique(DF), id ~ story_id, value.var = "story_id") 

下面是使用spread

library(dplyr) 
library(tidyr) 
df1 %>% 
    distinct %>% 
    spread(story_id, story_id) %>% 
    setNames(., c(names(.)[1], paste0("story_id", names(.)[-1]))) 
# id story_id123 story_id213 
#1 1   123   NA 
#2 2   NA   213 
#3 3   123   NA