【问题标题】:Transforming two column data in rows to multiple columns in R using tidyr [duplicate]使用tidyr将行中的两列数据转换为R中的多列[重复]
【发布时间】:2019-10-14 01:38:40
【问题描述】:

我正在尝试计算要在推荐系统中使用的产品和用户之间的差异。

数据为两列多行,需要转化为行为用户,列为产品。

我尝试了 reshape 包中的 cast 函数,但没有成功。

library(dplyr)
library(reshape2)
library(tidyr)
library(reshape)
data <- tibble("customerId" = c(1,2,3,4,1,1), productId = c(10,11,12,10,11,10))

我想把它转换成这种格式:

   10    11    12 
1   1     1     0     
2   0     1     0
3   0     0     1
4   1     0     0

我现在的主要问题是当我们有重复记录时,它应该只计算一次,所以我们有 0-1 个值。

【问题讨论】:

    标签: r dplyr tidyr data-transform


    【解决方案1】:

    在创建一列 1' 后,一个选项是 spread 到“宽”格式

    library(tidyverse)
    data %>% 
      mutate(n = 1) %>%
      spread(productId, n, fill = 0) %>%
      column_to_rownames('customerId')
    #  10 11 12
    #1  1  1  0
    #2  0  1  0
    #3  0  0  1
    #4  1  0  0
    

    【讨论】:

    • 您能否更新您的答案以支持重复行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    相关资源
    最近更新 更多