【发布时间】:2014-10-08 04:34:40
【问题描述】:
这个问题是我之前问题的延伸(点击here)
我把数据变成了这种格式:
我希望我的数据采用以下格式:
请注意,Month2 列第一行中的 0 被 Month2 列第二行中的 9 替换。同样,在 Month3 列中,0 被下面行中的数字替换
我想要实现的是将每列中的数字从低行移动到顶部行以替换 0
非常感谢任何帮助! :)
编辑 我有与上面类似的数据集,但 0 位于不同的位置:
x <- cbind(x1 = 10:17, x2 = c(4:1, 2:5),x3 = 21:28,x4 = 31:38, x5 = 41:48)
x[][lower.tri(x[])] <- 0
x1 x2 x3 x4 x5
10 4 21 31 41
0 3 22 32 42
0 0 23 33 43
0 0 0 34 44
0 0 0 0 45
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
我正在寻找如下输出:
x1 x2 x3 x4 x5
10 4 21 31 41
3 22 32 42 0
23 33 43 0 0
34 44 0 0 0
45 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
我尝试修改@akrun 提供的早期代码。但是没有成功。
关于如何进行的任何指示?蒂亚!!!
【问题讨论】:
-
可能有更好的方法,但请在shifting columns in data frames 上查看此答案。您必须调整以升档而不是降档,但似乎它会起作用。
-
让我试试。但我觉得如果我试图将所有行移动相同的数字,那会起作用。相反,我试图根据列和 0 的数量来改变它。 Month2 列向上移动 1 个空格。 Month3 列向上移动 2 个空格,依此类推……我可能需要做一个循环。感谢您的开始!
-
是的,我假设你会遍历列。不过,看起来 akrun 在下面有更好的解决方案。
-
为此使用
rev函数。无需循环 -
@RishiG 链接的问题中的一些非常聪明的答案,以及下面的答案。