小编Jon*_*Jon的帖子

R按升序排序一列,所有其他列降序(基于列顺序)

我有一个有序的表,类似如下:

df <- read.table(text = 
"A   B   C   Size
1   0   0   1
0   1   1   2
0   0   1   1
1   1   0   2
0   1   0   1",
header = TRUE)
Run Code Online (Sandbox Code Playgroud)

实际上会有更多的列,但这对于解决方案来说很好.

我希望首先通过SIZE(升序)对该表进行排序,然后按优先级顺序(降序)对每个列进行排序 - 即首先是列A,然后是B,然后是C,等等.

问题是我不会事先知道列名,所以不能命名它们,但实际上需要"除SIZE之外的所有列".

最终结果应该是:

A B C Size
1 0 0 1
0 1 0 1
0 0 1 1
1 1 0 2
0 1 1 2
Run Code Online (Sandbox Code Playgroud)

我已经看到了按两列排序的例子,但我找不到正确的语法来按顺序排列'所有其他列'.

非常感谢

sorting r multiple-columns

4
推荐指数
2
解决办法
3914
查看次数

滚动百分比沿列添加

我认为这在基础R中应该很容易,但我无法弄明白.我有一个简单的数据框,让我们说它看起来像这样

tbl <-  read.table(text = 
    "Field1 Field2
    100 200
    150 180
    200 160
    280 250
    300 300
    300 250",
header = TRUE)
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的是创建一个将应用滚动%添加的函数,例如:

fn <- function(tbl, pct) {}
Run Code Online (Sandbox Code Playgroud)

它接受上面的数据帧为tbl.它将当前行的百分比部分添加到基于NEXT的行pct,并且几乎以累积方式滚动它.

例如,fn(tbl$Field1, 0.1)会生成以下结果:

100   (100 + 0.1*0)
160   (150 + 0.1*100 = 160)
216   (200 + 0.1*160 = 216)
301.6 (280 + 0.1*216 = 301.6)
Run Code Online (Sandbox Code Playgroud)

等等

我会使用一个包解决方案,但更喜欢基础R,因为它有助于学习过程!我的长期目标是通过field和pct的每个组合构建一个循环,这样我就可以在回归模型中测试它的效果; 因此,我的直觉是,我后来可以应用的功能是前进的方向.

谢谢.

r apply rolling-computation

3
推荐指数
1
解决办法
80
查看次数