【问题标题】:reshape variable by unique values in each id通过每个 id 中的唯一值重塑变量
【发布时间】:2016-07-23 07:42:17
【问题描述】:

您好,我一直在尝试将我的数据重新调整为更宽。

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

请告诉我问题出在哪里。

【问题讨论】:

  • 我已经更新了我的问题@MrFlick
  • table(unique(data)) 不是更可取吗? reshape(unique(data)[, c(1,2,2)], timevar = 'story_id.1', v.names = 'story_id', dir = 'wide') 也可以使用
  • @rawr - 你甚至可以压扁一点reshape(transform(unique(data), time=story_id), idvar="id", direction="wide")

标签: r reshape data-manipulation


【解决方案1】:

这是一个使用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

【讨论】:

    【解决方案2】:

    以下作品:

    library(data.table) ; setDT(DF)
    
    dcast(unique(DF), id ~ story_id, value.var = "story_id")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多