将字符向量与 data.frame 结合并完成表格

飞利浦

我有一个带有 id 号的数据框、一个产品变量和一个虚拟变量,用于说明产品是否已被购买。

set.seed(2019)
library(dplyr)
library(data.table)

df <- data.frame(id = rep.int(c(1:5), 5),
                 bought = 1) %>%
  group_by(id) %>%
  mutate(product = c("244.1","455.2","266.3","777.4","111.1"))

除此之外,我还有一个向量,其中包含我知道尚未购买的产品,我想将其添加到数据框中。

products <- c("100.4", "500.1", "200.1", "121.6", "251.7", "215.1", "172.2")

也就是说,对于每个用户,我想要非购买的产品并设置购买 = 0。

一种方法是从向量中创建一个数据框并将其绑定到原始数​​据框。

products <- data.frame(product = products)
products$id <- NA
products$bought <- 0

products <- products[, c(2, 3, 1)]

df <- bind_rows(df, products)
#> Warning in bind_rows_(x, .id): binding character and factor vector,
#> coercing into character vector

然后我可以data.table用来完成表格,转动每一个NA = 0,如果我想过滤掉每一个观察id = NA(我也可以使用tidyr::complete(),但原始 data.frame 非常大,所以我更喜欢data.table

setDT(df)[CJ(id = id, product = product, unique = TRUE), on = .(id, product)][
  is.na(bought), bought := 0][]
#>     id bought product
#>  1: NA      0   100.4
#>  2: NA      0   111.1
#>  3: NA      0   121.6
#>  4: NA      0   172.2
#>  5: NA      0   200.1
#>  6: NA      0   215.1
#>  7: NA      0   244.1
#>  8: NA      0   251.7
#>  9: NA      0   266.3
#> 10: NA      0   455.2
#> 11: NA      0   500.1
#> 12: NA      0   777.4
#> 13:  1      0   100.4
#> 14:  1      1   111.1
#> 15:  1      0   121.6

但是,从向量创建 data.frame 的方法似乎相当冗长,我宁愿不添加带有id = NA. 有没有更巧妙的方法将矢量与 data.frame 结合起来并完成它?

reprex 包(v0.2.1)于 2019 年 1 月 8 日创建

丹尼斯

使用 data.table 的简单解决方案:

products <- c("100.4", "500.1", "200.1", "121.6", "251.7", "215.1", "172.2")

df <- setDT(df)
rbindlist(lapply(unique(df$id),function(ID){
  rbind(df[id == ID],data.table(product = products,id = ID, bought = 0))
}))

您还可以考虑使用该 dtaa 框架合并两个数据框架:

products <- data.frame(product = rep(products,each = length(unique(df$id))), 
                                     id = rep(unique(df$id),length(unique(products))))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将向量列表合并到具有列表编号的data.frame

来自分类Dev

igraph graph.data.frame默默地将因子转换为字符向量

来自分类Dev

R:将字符向量添加到data.frame行

来自分类Dev

将字符向量转换为具有最大行数限制的data.frame?

来自分类Dev

将字符串向量添加为data.frame中的新列?

来自分类Dev

将“表格”转换为“ data.frame”

来自分类Dev

将“表格”转换为“ data.frame”

来自分类Dev

将PDF表格转换为R中的data.frame...表格到data.frame

来自分类Dev

如何拆分data.frame->将合并应用于子集->合并为data.frame

来自分类Dev

大字符串向量到data.frame

来自分类Dev

子集字符向量以在data.frame中创建列

来自分类Dev

将Spark Data Frame或GlobalTempView与PySpark结合使用

来自分类Dev

将data.frame列转换为向量

来自分类Dev

将向量按原样添加为data.frame元素

来自分类Dev

将data.frame列从列表转换为向量

来自分类Dev

将命名向量转换为data.frame R

来自分类Dev

如何将lapply的结果合并到data.frame?

来自分类Dev

将 data.frame 与 SpatialPolygonsDataFrame 合并以进行公寓分类

来自分类Dev

按组将data.frame拆分为向量列表而不是data.frames列表

来自分类Dev

R:JSON到data.frame的向量

来自分类Dev

将长字符串转换为data.frame

来自分类Dev

将data.frame结构打印为字符

来自分类Dev

如何将data.frame转换为R中的原子向量

来自分类Dev

如何将data.frame的列转换为数值向量

来自分类Dev

通过几个因素将向量返回功能应用于data.frame分组

来自分类Dev

将列向量分配给多个data.frame对象作为公共属性

来自分类Dev

R - 将 Nx1 data.frame 转换为向量时的奇怪行为

来自分类Dev

将函数内循环的输出存储到向量或 data.frame 中

来自分类Dev

将 data.frame 行中的值替换为向量对应行的值

Related 相关文章

  1. 1

    将向量列表合并到具有列表编号的data.frame

  2. 2

    igraph graph.data.frame默默地将因子转换为字符向量

  3. 3

    R:将字符向量添加到data.frame行

  4. 4

    将字符向量转换为具有最大行数限制的data.frame?

  5. 5

    将字符串向量添加为data.frame中的新列?

  6. 6

    将“表格”转换为“ data.frame”

  7. 7

    将“表格”转换为“ data.frame”

  8. 8

    将PDF表格转换为R中的data.frame...表格到data.frame

  9. 9

    如何拆分data.frame->将合并应用于子集->合并为data.frame

  10. 10

    大字符串向量到data.frame

  11. 11

    子集字符向量以在data.frame中创建列

  12. 12

    将Spark Data Frame或GlobalTempView与PySpark结合使用

  13. 13

    将data.frame列转换为向量

  14. 14

    将向量按原样添加为data.frame元素

  15. 15

    将data.frame列从列表转换为向量

  16. 16

    将命名向量转换为data.frame R

  17. 17

    如何将lapply的结果合并到data.frame?

  18. 18

    将 data.frame 与 SpatialPolygonsDataFrame 合并以进行公寓分类

  19. 19

    按组将data.frame拆分为向量列表而不是data.frames列表

  20. 20

    R:JSON到data.frame的向量

  21. 21

    将长字符串转换为data.frame

  22. 22

    将data.frame结构打印为字符

  23. 23

    如何将data.frame转换为R中的原子向量

  24. 24

    如何将data.frame的列转换为数值向量

  25. 25

    通过几个因素将向量返回功能应用于data.frame分组

  26. 26

    将列向量分配给多个data.frame对象作为公共属性

  27. 27

    R - 将 Nx1 data.frame 转换为向量时的奇怪行为

  28. 28

    将函数内循环的输出存储到向量或 data.frame 中

  29. 29

    将 data.frame 行中的值替换为向量对应行的值

热门标签

归档