如何重塑data.frame

如何重塑data.frame,r,R,我想得到一个函数,它对数据帧进行排序,使相等的数字或0(/可选NA)在同一列中 它应该类似于这样: 1 0 3 4 5 0 2 0 0 5 1 2 0 0 0 1 0 0 0 0 一个选项是转换为data.frame并使用map\u df library(purrr) library(dplyr) map_df(z, as.data.frame) %>% mutate_all(replace_na, 0) 一个选项是转换为data.frame并使用map\u df librar

我想得到一个函数,它对数据帧进行排序,使相等的数字或0(/可选NA)在同一列中

它应该类似于这样:

1 0 3 4 5
0 2 0 0 5
1 2 0 0 0
1 0 0 0 0

一个选项是转换为
data.frame
并使用
map\u df

library(purrr)
library(dplyr)
map_df(z, as.data.frame) %>%
    mutate_all(replace_na, 0)

一个选项是转换为
data.frame
并使用
map\u df

library(purrr)
library(dplyr)
map_df(z, as.data.frame) %>%
    mutate_all(replace_na, 0)

只要使用base R就可以做到这一点

do.call(rbind, Map(function(z) {x <- t(apply(z, 1, `length<-`, l));x[is.na(x)] <- 0;x}, z))
#             [,1]       [,2]      [,3]      [,4]
#  [1,]  1.3709584  0.0000000 0.0000000 0.0000000
#  [2,] -0.5646982  0.0000000 0.0000000 0.0000000
#  [3,]  0.3631284  0.0000000 0.0000000 0.0000000
#  [4,]  0.6328626  0.0000000 0.0000000 0.0000000
#  [5,]  1.3709584 -0.5646982 0.0000000 0.0000000
#  [6,]  1.3709584  0.3631284 0.0000000 0.0000000
#  [7,]  1.3709584  0.6328626 0.0000000 0.0000000
#  [8,] -0.5646982  0.3631284 0.0000000 0.0000000
#  [9,] -0.5646982  0.6328626 0.0000000 0.0000000
# [10,]  0.3631284  0.6328626 0.0000000 0.0000000
# [11,]  1.3709584 -0.5646982 0.3631284 0.0000000
# [12,]  1.3709584 -0.5646982 0.6328626 0.0000000
# [13,]  1.3709584  0.3631284 0.6328626 0.0000000
# [14,] -0.5646982  0.3631284 0.6328626 0.0000000
# [15,]  1.3709584 -0.5646982 0.3631284 0.6328626

只要使用base R就可以做到这一点

do.call(rbind, Map(function(z) {x <- t(apply(z, 1, `length<-`, l));x[is.na(x)] <- 0;x}, z))
#             [,1]       [,2]      [,3]      [,4]
#  [1,]  1.3709584  0.0000000 0.0000000 0.0000000
#  [2,] -0.5646982  0.0000000 0.0000000 0.0000000
#  [3,]  0.3631284  0.0000000 0.0000000 0.0000000
#  [4,]  0.6328626  0.0000000 0.0000000 0.0000000
#  [5,]  1.3709584 -0.5646982 0.0000000 0.0000000
#  [6,]  1.3709584  0.3631284 0.0000000 0.0000000
#  [7,]  1.3709584  0.6328626 0.0000000 0.0000000
#  [8,] -0.5646982  0.3631284 0.0000000 0.0000000
#  [9,] -0.5646982  0.6328626 0.0000000 0.0000000
# [10,]  0.3631284  0.6328626 0.0000000 0.0000000
# [11,]  1.3709584 -0.5646982 0.3631284 0.0000000
# [12,]  1.3709584 -0.5646982 0.6328626 0.0000000
# [13,]  1.3709584  0.3631284 0.6328626 0.0000000
# [14,] -0.5646982  0.3631284 0.6328626 0.0000000
# [15,]  1.3709584 -0.5646982 0.3631284 0.6328626

你能解释一下吗?代码很密集,你能解释一下吗?代码非常密集。你能帮我把这个数据框从“三角矩阵”形式重新定位到我想要的形状吗?我试着自己做,但失败了:/@KonradX上面给出了你想要的矩形格式。我猜你提到的值是
rnorm
值,right@KonradX我没有完全理解预期输出的逻辑,尤其是当你只显示“x1”、“x2”、“x3”、“x4”时。你能编辑你的帖子并更新吗?因为评论中的格式不明确。我希望每一列中只有0和向量“数字”中的相同数字。附件中的图片显示了我得到的,而不是我想要的。你能帮我将这个数据框从“三角矩阵”形式重新定位到我想要的形状吗?我试着自己做,但失败了:/@KonradX上面给出了你想要的矩形格式。我猜你提到的值是
rnorm
值,right@KonradX我没有完全理解预期输出的逻辑,尤其是当你只显示“x1”、“x2”、“x3”、“x4”时。你能编辑你的帖子并更新吗?因为评论中的格式不明确。我希望每一列中只有0和向量“数字”中的相同数字。附件中的图片显示的是我得到的,而不是我想要的。你能回到以前的更新吗?Conradx:谢谢你删除了你的另一个问题,(我相信)这是正确的做法。不过,正如其评论中所建议的那样,(1)取消接受@akrun的答案并解释取消选择它的原因是非常有用的;然后(2)编辑您的问题,以提供示例明确的数据、尝试的代码和预期的输出。以一种能很好地处理问题的方式提问并不总是直观的,而且肯定需要你付出额外的努力。我相信,通过发展这项技能,你会得到回报。()你能回到你以前的更新吗?:谢谢你删除了你的另一个问题,(我相信)这是正确的做法。不过,正如其评论中所建议的那样,(1)取消接受@akrun的答案并解释取消选择它的原因是非常有用的;然后(2)编辑您的问题,以提供示例明确的数据、尝试的代码和预期的输出。以一种能很好地处理问题的方式提问并不总是直观的,而且肯定需要你付出额外的努力。我相信,通过发展这项技能,你会得到回报。()