通过每个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
请让我知道什么问题是。
答
以下工作:
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
我已经更新了我的问题@MrFlick –
不会'表(唯一的(数据))'是更理想的选择? 'reshape(unique(data)[,c(1,2,2)],timevar ='story_id.1',v.names ='story_id',dir ='wide')'也可以工作 – rawr
@rawr -you can (变换(唯一(数据),时间= story_id),idvar =“id”,方向=“宽”)。 – thelatemail