首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重塑数据--这是tidyr::tidyr的一个操作吗?

重塑数据--这是tidyr::tidyr的一个操作吗?
EN

Stack Overflow用户
提问于 2015-08-01 16:29:45
回答 2查看 182关注 0票数 0

我试图重塑一个数据框架,以便列中的每个唯一值都变成一个二进制列。

我得到的数据如下:

代码语言:javascript
复制
df <- data.frame(id = c(1,1,2),
                 value = c(200,200,1000),
                 feature = c("A","B","C"))

print(df)

##id,value,feature
##1,200,A
##1,200,B
##2,1000,C

我试着把它重塑成这样:

代码语言:javascript
复制
##trying to get here
##id,value,A,B,C
##1,200,1,1,0
##2,1000,0,0,1

spread(df,id,feature)失败,因为ids重复。

我想重塑数据,以便于建模--我正试图从特性的存在或缺失中预测价值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-01 16:35:08

正如我前面的评论:您必须使用reshape2包的reshape2,因为spread对于处理和/或符合整洁数据原则的数据很有效。你的“传播”有点不同(而且很复杂)。当然,除非您将spread与其他函数结合使用。

代码语言:javascript
复制
library(reshape2)
dcast(df, id + value ~ ..., length)
  id value A B C
1  1   200 1 1 0
2  2  1000 0 0 1
票数 4
EN

Stack Overflow用户

发布于 2015-08-01 16:36:36

不过,有一种方法可以使用tidyr::spread,使用始终等于1的转换变量。

代码语言:javascript
复制
library(dplyr)
library(tidyr)

mutate(df,v=1) %>%
  spread(feature,v,fill=0)

  id value A B C
1  1   200 1 1 0
2  2  1000 0 0 1
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31763757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档