我有一个有序的表,类似如下:
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)
我已经看到了按两列排序的例子,但我找不到正确的语法来按顺序排列'所有其他列'.
非常感谢
我认为这在基础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的每个组合构建一个循环,这样我就可以在回归模型中测试它的效果; 因此,我的直觉是,我后来可以应用的功能是前进的方向.
谢谢.