首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-使用reshape()将数据帧转换为两列矩阵

R-使用reshape()将数据帧转换为两列矩阵
EN

Stack Overflow用户
提问于 2014-09-26 19:02:48
回答 2查看 386关注 0票数 2

我尝试过使用reshape()函数(reshape2包)的许多变体来将包含不同因素的数据框架转换为两列矩阵,但我没有成功。我也需要忽略空白。下面是一个简单的示例,说明了我要完成的任务:

代码Bucket1 Bucket2

1绿色蓝色

2绿色(空白)

3(空白)(空白)

4(空白)蓝色

转入:

码桶

1绿色

1蓝色

2绿色

4蓝色

有人能帮忙重塑()吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-26 19:18:46

代码语言:javascript
复制
  library(data.table)

  dat <- as.data.table(your_original_data.frame)

  dat[, c(Bucket1, Bucket2), by=Code]
     Code    V1
  1:    1 Green
  2:    1  Blue
  3:    2 Green
  4:    2    NA
  5:    3    NA
  6:    3    NA
  7:    4    NA
  8:    4  Blue

  ## To drop the NA's 
  dat[, c(Bucket1, Bucket2), by=Code][!is.na(V1)]
     Code    V1
  1:    1 Green
  2:    1  Blue
  3:    2 Green
  4:    4  Blue

  ## if they are actually called "(Blank)" use 
  dat[, c(Bucket1, Bucket2), by=Code][V1 != "(Blank)"]

更新:要将您的因素转换为字符:

代码语言:javascript
复制
   colsToConvert <- setdiff(names(dat), "Code") # or manually type them 
   dat[, c(colsToConvert) := lapply(.SD, as.character), .SDcols = colsToConvert]
票数 1
EN

Stack Overflow用户

发布于 2014-09-26 19:59:11

reshape2包包含一个melt函数,用于将数据集从宽格式转换为长格式。有一个reshape函数,它是**stats*包的一部分,它对于重塑数据也很有用,但不是我很熟悉的函数。

要重塑您所描述的数据,可以使用melt,如下所示。我猜您的空格是NA,所以我使用na.rm参数来删除它们。我使用value.name参数来命名创建的新列。

代码语言:javascript
复制
melt(dat, id.vars = "Code", na.rm = TRUE, value.name = "Bucket")

结果:

代码语言:javascript
复制
  Code variable Bucket
1    1  Bucket1  Green
2    2  Bucket1  Green
5    1  Bucket2   Blue
8    4  Bucket2   Blue

这没有给出您所请求的确切输出,因为您希望您的最终数据集按特定的顺序进行,并且不需要新的variable列。您可以使用dplyr包中的一些方便的函数来删除额外的列(使用select)和OrderbyCode(使用arrange),尽管在melting之后当然还有其他方法来操作结果。

代码语言:javascript
复制
require(dplyr)
dat %>% 
    melt(id.vars = "Code", na.rm = TRUE, value.name = "Bucket") %>%
    select(-variable) %>%
    arrange(Code)

现在的结果看起来是:

代号桶1 1绿2 1蓝3 2绿4 4蓝

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26066585

复制
相关文章

相似问题

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