提取第一个非随机列的值

十足的全能者

在我的数据集中,我有10列填充CR,II和RAND。我想创建另外2列,一个列提取没有“ RAND”作为其值的第一个块的值,另一列跟踪该块号。例如,某个ID可能在block_1和block_2中具有“ RAND”,在block_3中具有“ II”,我希望第一新列具有值“ II”,第二新列具有值“ 3”。我该如何实现?

下面是一个示例数据框。

set.seed(2288)
dff<-data.frame(replicate(10,sample(c("II", "RAND","CR"),10,rep=TRUE)))

myFun<- function(n = 5000) {
  a <- do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
  paste0(a, sprintf("%04d", sample(9999, n, TRUE)), sample(LETTERS, n, TRUE))
}

dff$ID<-myFun(10)
dff<-dff[,c(11, 1:10)]
dff[2:11] <- sapply(dff[2:11],as.factor)

dff<-data.table::setnames(dff, old = c('X1','X2','X3','X4', 'X5','X6','X7','X8','X9','X10'), new = c('block_1','block_2','block_3','block_4', 'block_5','block_6','block_7','block_8','block_9','block_10'))
r2evans
func <- function(..., val = "0") {
  dat <- unlist(list(...))
  ind <- which.max(dat != val)
  list(dat[[ind]], ind)
}
setNames(
  do.call(rbind.data.frame, do.call(Map, c(list(f=func), dff[,-1]))),
  c("val", "ind"))
#    val ind
# 2    2   1
# 1    1   1
# 11   1   1
# 21   2   1
# 0    1   2
# 12   1   1
# 01   1   2
# 02   2   3
# 22   2   1
# 03   2   4

(可以cbind编辑该数据。)

或者,先查找索引,然后再检索值。也许更清洁的方法?

do.call(mapply, c(list(FUN=func), dff[,-1]))
# 2.block_1 1.block_1 1.block_1 2.block_1 0.block_2 1.block_1 0.block_2 0.block_3 2.block_1 0.block_4 
#         1         1         1         1         2         1         2         3         1         4 
dff$ind <- do.call(mapply, c(list(FUN=func), dff[,-1]))
dff$val <- dff[,-1][cbind(seq_len(nrow(dff)), dff$ind)]
dff
#            ID block_1 block_2 block_3 block_4 block_5 block_6 block_7 block_8 block_9 block_10 ind val
# 1  CIKJH1554S       2       1       0       0       2       2       1       2       1        1   1   2
# 2  URADX4138B       1       1       2       1       1       1       2       0       0        2   1   1
# 3  BWYCA9574K       1       0       1       1       2       1       2       1       1        1   1   1
# 4  FKBFM4773W       2       0       0       1       1       1       2       1       0        1   1   2
# 5  LTTTI7549S       0       1       0       1       1       0       2       2       1        2   2   1
# 6  OJDSI8401L       1       1       1       2       2       0       0       1       0        0   1   1
# 7  IAUKO4799A       0       1       0       1       1       1       1       2       0        2   2   1
# 8  WBJPE0696J       0       0       2       0       0       1       0       0       0        2   3   2
# 9  FNFQC9244G       2       1       0       2       1       0       2       1       2        1   1   2
# 10 WQTRB4780S       0       0       0       2       1       2       2       0       2        2   4   2

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提取第一个非随机列的值

来自分类Dev

在python中提取对类型的第一个值

来自分类Dev

提取熊猫数据框列中第一个引号之间的值

来自分类Dev

从列中的nvarchar提取第一个单词

来自分类Dev

记录存储到数组,然后在跳过第一个索引位置的同时提取随机值

来自分类Dev

返回第一个非空/空白值?

来自分类Dev

返回第一个非零值的列名

来自分类Dev

返回第一个非空/空白值?

来自分类Dev

查找第一个非零值并计算其后的列

来自分类Dev

熊猫分组依据,并找到所有列的第一个非空值

来自分类Dev

具有多列的表中每个组的第一个非空值

来自分类Dev

Python pandas:如何从特定列中选择第一个非“无”值?

来自分类Dev

返回 tableau 中列/行中的第一个非零值

来自分类Dev

返回每列R的第一个和最后一个非NA值的年份

来自分类Dev

如何将第一个非缺失值写入第一个缺失的观测值

来自分类Dev

仅显示第一个重复的列值

来自分类Dev

多个第一个和最后一个非NA值(按组)

来自分类Dev

Excel公式获取第一个和最后一个非零值

来自分类Dev

从选定的行中为每一列获取第一个非空值

来自分类Dev

熊猫根据另一列将nan替换为第一个非nan值

来自分类Dev

从带有熊猫的列中提取值时,无法仅检索遇到的第一个值

来自分类Dev

从R中的二进制矩阵中提取第一个和最后一个非零行和列

来自分类Dev

如何为每行返回一系列列中的第一个非NULL值?第二个非NULL值?

来自分类Dev

在r中的符号和第一个非单词char之后提取文本

来自分类Dev

从R中的数字中提取第一个非零数字

来自分类Dev

R:按组逐列查找data.table中的第一个非NA观测值

来自分类Dev

更改列中第一个非零元素上方的数组值

来自分类Dev

Excel公式获取行和返回列标题中的第一个非零值

来自分类Dev

MySQL从带有列名的select语句的列列表中返回第一个非NULL值

Related 相关文章

  1. 1

    提取第一个非随机列的值

  2. 2

    在python中提取对类型的第一个值

  3. 3

    提取熊猫数据框列中第一个引号之间的值

  4. 4

    从列中的nvarchar提取第一个单词

  5. 5

    记录存储到数组,然后在跳过第一个索引位置的同时提取随机值

  6. 6

    返回第一个非空/空白值?

  7. 7

    返回第一个非零值的列名

  8. 8

    返回第一个非空/空白值?

  9. 9

    查找第一个非零值并计算其后的列

  10. 10

    熊猫分组依据,并找到所有列的第一个非空值

  11. 11

    具有多列的表中每个组的第一个非空值

  12. 12

    Python pandas:如何从特定列中选择第一个非“无”值?

  13. 13

    返回 tableau 中列/行中的第一个非零值

  14. 14

    返回每列R的第一个和最后一个非NA值的年份

  15. 15

    如何将第一个非缺失值写入第一个缺失的观测值

  16. 16

    仅显示第一个重复的列值

  17. 17

    多个第一个和最后一个非NA值(按组)

  18. 18

    Excel公式获取第一个和最后一个非零值

  19. 19

    从选定的行中为每一列获取第一个非空值

  20. 20

    熊猫根据另一列将nan替换为第一个非nan值

  21. 21

    从带有熊猫的列中提取值时,无法仅检索遇到的第一个值

  22. 22

    从R中的二进制矩阵中提取第一个和最后一个非零行和列

  23. 23

    如何为每行返回一系列列中的第一个非NULL值?第二个非NULL值?

  24. 24

    在r中的符号和第一个非单词char之后提取文本

  25. 25

    从R中的数字中提取第一个非零数字

  26. 26

    R:按组逐列查找data.table中的第一个非NA观测值

  27. 27

    更改列中第一个非零元素上方的数组值

  28. 28

    Excel公式获取行和返回列标题中的第一个非零值

  29. 29

    MySQL从带有列名的select语句的列列表中返回第一个非NULL值

热门标签

归档