拥有如下的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需要花费很多时间。
答案 0 :(得分:1)
使用data.frame
paste
和do.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))