【问题标题】:What's the best way to collapse sparse data into single rows in R?在 R 中将稀疏数据折叠成单行的最佳方法是什么?
【发布时间】:2017-04-04 18:14:59
【问题描述】:

我有一些交易数据想在 R 中进行转换。

df <- data.frame(
  customer_id = c(123, 123, 123),
  time = c(1, 2, 3),
  rec_type = c('contact', 'appointment', 'sale'),
  variable_1 = c('Yes', NA, NA),
  variable_2 = c(NA, 'No', NA),
  variable_3 = c(NA, NA, 'complete'))

数据如下:

customer_id     time    rec_type     variable_1     variable_2  variable_3
123             1        contact      Yes            NA          NA
123             2        appointment  NA             No          NA
123             3        sale         NA             NA          complete

本质上,我试图通过删除特定于时间和特定于记录的信息来汇总个人数据,然后将个人的唯一数据折叠到唯一信息的单行中,因此它看起来像:

customer_id   variable_1    variable_2    variable_3
123           Yes           No            complete

在 R 中最好的方法是什么?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    根据你的例子,你可以试试:

    df %>% 
      group_by(customer_id) %>%
      select( -time, -rec_type) %>%
      summarise_each(funs(na.omit(.)) )
    

    附言当summarise_each() 被弃用时,summarise_all() 可能是未来更好的选择

    【讨论】:

    • df %&gt;% group_by(customer_id) %&gt;% summarise_each(funs(na.omit), starts_with("variable_")) 但这要求每列中的结果是每个客户的单个非 NA 值
    【解决方案2】:

    轻松使用 data.table

    library(data.table)
    
    setDT(mydata)[,.(na.omit(variable_1),na.omit(variable_2),na.omit(variable_3)), by=.(customer_id)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 2016-01-15
      • 2018-08-11
      • 2021-01-14
      • 2014-09-16
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多