根据行单元格值的十进制数生成 data.frame 列

  • 本文关键字:data frame 十进制数 单元格 r
  • 更新时间 :
  • 英文 :


有一个像这样的数据帧:

[,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    6    7   10   23   22 
[2,]    2   15   18   21   24   27
[3,]   13   16   23   22   25   28

我想创建一个名为"pattern"的字符串类型的新列。"模式"的值是通过连接行中每个单元格值的十进制数来生成的。因此,对于第一行,模式的值将生成如下:

-对于 1,十进制数为 0,6 为 0,7 为 0,10 为 1,23 为 2,对于 22 为 2。所以我们得到000122

对于整个数据帧,结果应该是:

[Pattern]
[1]   000122
[2]   011222
[3]   112222

我尝试使用 for 循环,但包含大量行的 data.frame 需要花费大量时间。

将整数除法输出转换为data.frame,并使用do.callpaste每行中的元素

do.call(paste0, as.data.frame(m1%/% 10))
#[1] "000122" "011222" "112222"

或者通过将MARGIN指定为 1 并paste来循环遍历具有apply的每一行

apply(m1 %/% 10, 1, FUN = paste, collapse="")

数据

m1 <- structure(c(1, 2, 13, 6, 15, 16, 7, 18, 23, 10, 21, 22, 23, 24, 
25, 22, 27, 28), .Dim = c(3L, 6L))

最新更新