如何使用两个规则有效地将数据帧子集化为列表列表

克兰茨

我将不胜感激任何帮助有效地将数据帧子集划分为几个块以传递给基于imput的列表列表Weights_x,其中x = {1, 2, ..., 10}.

这个问题和我的尝试都是基于这个这个不同的是,现在我想创建一个列表列表,其中每个列表只有一个值imput和一列变量Weights_x

我下面的代码从@DarrenTsai 扩展而来,适用于 的几列Weights_x,但我有100 imput * 1000 weights要创建的子集。因此,我需要一种更有效的方法,无需太多代码即可完成相同的结果。

我的数据:

dat <- structure(list(id = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 
3, 3, 4, 4, 4, 4, 4), imput = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 
1, 2, 3, 4, 5, 1, 2, 3, 4, 5), A = c(1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), B = c(1, 1, 1, 1, 1, 0, 
0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0), Pass = c(278, 278, 
278, 278, 278, 100, 100, 100, 100, 100, 153, 153, 153, 153, 153, 
79, 79, 79, 79, 79), Fail = c(740, 743, 742, 743, 740, 7581, 
7581, 7581, 7581, 7581, 1231, 1232, 1235, 1235, 1232, 1731, 1732, 
1731, 1731, 1731), Weights_1 = c(4, 3, 4, 3, 3, 1, 2, 1, 2, 1, 
12, 12, 11, 12, 12, 3, 5, 3, 3, 3), Weights_2 = c(3, 3, 3, 3, 
3, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 3, 3, 3, 3, 3), Weights_3 = c(4, 
3, 3, 3, 3, 1, 2, 1, 1, 1, 12, 12, 11, 12, 12, 3, 3, 3, 3, 3), 
    Weights_4 = c(3, 3, 4, 3, 3, 1, 1, 1, 2, 1, 12, 12, 13, 12, 
    12, 3, 2, 3, 3, 3), Weights_5 = c(3, 3, 3, 3, 3, 1, 0, 1, 
    1, 1, 12, 12, 12, 12, 12, 3, 3, 3, 3, 3), Weights_6 = c(4, 
    3, 3, 3, 3, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 3, 3, 3, 3, 
    3), Weights_7 = c(3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 12, 12, 12, 
    12, 12, 3, 3, 3, 3, 3), Weights_8 = c(3, 3, 3, 3, 3, 1, 1, 
    1, 1, 1, 15, 12, 12, 12, 12, 3, 3, 3, 3, 3), Weights_9 = c(3, 
    3, 3, 4, 3, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 2, 3, 3, 3, 
    3), Weights_10 = c(3, 3, 4, 3, 3, 1, 1, 1, 1, 1, 12, 10, 
    12, 12, 12, 3, 3, 3, 3, 3)), class = "data.frame", row.names = c(NA, 
-20L))

我的方法:

##Weights = `Weights_1`
myvars_1 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_1")
dat_1 <- dat[myvars_1]


mylist_1 <- by(dat_1, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_1
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_2`
myvars_2 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_2")
dat_2 <- dat[myvars_2]


mylist_2 <- by(dat_2, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_2
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_3`
myvars_3 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_3")
dat_3 <- dat[myvars_3]


mylist_3 <- by(dat_3, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_3
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_4`
myvars_4 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_4")
dat_4 <- dat[myvars_4]


mylist_4 <- by(dat_4, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_4
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_5`
myvars_5 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_5")
dat_5 <- dat[myvars_5]


mylist_5 <- by(dat_5, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_5
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})


##Weights = `Weights_6`
myvars_6 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_6")
dat_6 <- dat[myvars_6]


mylist_6 <- by(dat_6, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_6
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})


##Weights = `Weights_7`
myvars_7 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_7")
dat_7 <- dat[myvars_7]


mylist_7 <- by(dat_7, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_7
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_8`
myvars_8 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_8")
dat_8 <- dat[myvars_8]


mylist_8 <- by(dat_8, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_8
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_9`
myvars_9 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_9")
dat_9 <- dat[myvars_9]


mylist_9 <- by(dat_9, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_9
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##Weights = `Weights_10`
myvars_10 <- c("id", "imput", "A", "B", "Pass", "Fail", "Weights_10")
dat_10 <- dat[myvars_10]


mylist_10 <- by(dat_10, dat$imput, function(x){
  nn <- x$Fail + x$Pass
  weights <- x$Weights_10
  return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
              id = x$id, P = x$imput, nn = nn, weights = weights))
})

##create list of lists
mylistslist <- list(mylist_1, mylist_2, mylist_3, mylist_4, mylist_5, 
                    mylist_6, mylist_7, mylist_8, mylist_9, mylist_10)

在此先感谢您的帮助。

没有人

使用lapply一种解决方案可能是

myvars <- c("id", "imput", "A", "B", "Pass", "Fail")
cols <- which(names(dat) %in% myvars)
ind <- grep('^Weights_\\d+$', names(dat))
out <- lapply(ind, function (k) {
  dat_1 <- dat[c(cols,k)]
  by(dat_1, dat$imput, function(x){
    nn <- x$Fail + x$Pass
    weights <- .subset2(x, ncol(x))
    return(list(N = nrow(x), ncases = x$Pass, A = x$A, B = x$B,
                id = x$id, P = x$imput, nn = nn, weights = weights))
  })
})

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何有效地将数据帧子集划分为多个块以传递给列表列表

来自分类Dev

如何有效地离开外部联接两个排序列表

来自分类Dev

如何有效地比较Python中的两个列表?

来自分类Dev

如何有效地离开外部联接两个排序列表

来自分类Dev

如何通过id有效地映射两个对象列表

来自分类Dev

如何使用python中的列表有效地排序列表列表

来自分类Dev

如何使用python有效地匹配两个大列表之间的字符串?(510.000.000比较)

来自分类Dev

如何在python中有效地合并两个具有容差的数据帧

来自分类Dev

如何使用两个变量的值的组合创建可扩展的函数以将数据帧子集化为数据帧列表

来自分类Dev

如何有效地匹配两个数据帧中的字符串

来自分类Dev

如何有效地在两个具有最小距离的点列表中找到点对?

来自分类Dev

有两个非常大的列表/集合 - 如何有效地检测和/或删除重复项

来自分类Dev

python有效地比较列表列表

来自分类Dev

python有效地比较列表列表

来自分类Dev

有效地找到两个列表之间的元素差异

来自分类Dev

在两个列表中有效地查找项目Python

来自分类Dev

在Python中有效地合并两个列表的值

来自分类Dev

如何有效地比较两个字典列表以宣布“赢家”

来自分类Dev

有效地将长度为 n 的列表的 Pandas 数据帧转换为 n 个数据帧

来自分类Dev

如何在Java Me中有效地连接两个向量的数据?

来自分类Dev

如何更有效地将字典数据或数组列表数据保存到playerprefs?

来自分类Dev

如何有效地将bash变量分为两个变量

来自分类Dev

有效地比较两个大型列表的每个列表中的第一项?

来自分类Dev

将数据帧列表中的数据有效地重新排列到 R 中的数组中?

来自分类Dev

如何使用Json.NET有效地解析最多两个深度?

来自分类Dev

在非平凡条件下有效地合并两个数据帧

来自分类Dev

如何使用python列表有效地重命名数据框索引?

来自分类Dev

如何有效地从熊猫的列表列中计算每个值的出现次数?

来自分类Dev

有效地找到存储为PyTorch张量的两个向量列表的点积并保留反向传播

Related 相关文章

  1. 1

    如何有效地将数据帧子集划分为多个块以传递给列表列表

  2. 2

    如何有效地离开外部联接两个排序列表

  3. 3

    如何有效地比较Python中的两个列表?

  4. 4

    如何有效地离开外部联接两个排序列表

  5. 5

    如何通过id有效地映射两个对象列表

  6. 6

    如何使用python中的列表有效地排序列表列表

  7. 7

    如何使用python有效地匹配两个大列表之间的字符串?(510.000.000比较)

  8. 8

    如何在python中有效地合并两个具有容差的数据帧

  9. 9

    如何使用两个变量的值的组合创建可扩展的函数以将数据帧子集化为数据帧列表

  10. 10

    如何有效地匹配两个数据帧中的字符串

  11. 11

    如何有效地在两个具有最小距离的点列表中找到点对?

  12. 12

    有两个非常大的列表/集合 - 如何有效地检测和/或删除重复项

  13. 13

    python有效地比较列表列表

  14. 14

    python有效地比较列表列表

  15. 15

    有效地找到两个列表之间的元素差异

  16. 16

    在两个列表中有效地查找项目Python

  17. 17

    在Python中有效地合并两个列表的值

  18. 18

    如何有效地比较两个字典列表以宣布“赢家”

  19. 19

    有效地将长度为 n 的列表的 Pandas 数据帧转换为 n 个数据帧

  20. 20

    如何在Java Me中有效地连接两个向量的数据?

  21. 21

    如何更有效地将字典数据或数组列表数据保存到playerprefs?

  22. 22

    如何有效地将bash变量分为两个变量

  23. 23

    有效地比较两个大型列表的每个列表中的第一项?

  24. 24

    将数据帧列表中的数据有效地重新排列到 R 中的数组中?

  25. 25

    如何使用Json.NET有效地解析最多两个深度?

  26. 26

    在非平凡条件下有效地合并两个数据帧

  27. 27

    如何使用python列表有效地重命名数据框索引?

  28. 28

    如何有效地从熊猫的列表列中计算每个值的出现次数?

  29. 29

    有效地找到存储为PyTorch张量的两个向量列表的点积并保留反向传播

热门标签

归档