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

时间:2017-09-22 13:27:45

标签: r

拥有如下的data.frame:

       [,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

对于整个data.frame,结果应为:

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

我尝试使用for循环,但是对于包含大量行的data.frames需要花费很多时间。

1 个答案:

答案 0 :(得分:1)

使用data.frame

将整数除法输出转换为pastedo.call每行中的元素
do.call(paste0, as.data.frame(m1%/% 10))
#[1] "000122" "011222" "112222"

或者通过将apply指定为1和MARGIN

,使用paste遍历每一行
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))