我最近大部分时间都在 SAS 工作,但不想失去对 RI 的熟悉程度,我想复制一些我做过的基本工作。如果我的 SAS 代码不完美,你会原谅我的,因为我家里没有 SAS,所以我是凭记忆做的。
在 SAS 中,我有一个大致类似于以下示例的数据集(。相当于 SAS 中的 NA)
A B
1 1
1 3
0 .
0 1
1 0
0 0
如果上面的数据集是 work.foo,那么我可以执行以下操作。
/* create work.bar from dataset work.foo */
data work.bar;
set work.foo;
/* generate a third variable and add it to work.bar */
if a = 0 and b ge 1 then c = 1;
if a = 0 and b = 0 then c = 2;
if a = 1 and b ge 1 then c = 3;
if a = 1 and b = 0 then c = 4;
run;
我会得到类似的东西
A B C
1 1 3
1 3 3
0 . .
0 1 1
1 0 4
0 0 2
然后我可以按 C 进行排序,然后使用 C 执行各种操作来创建 4 个子组。例如,我可以通过
proc means noprint data =work.bar;
by c;
var a b;
output out = work.means mean(a b) = a b;
run;
我会按名为 work.means 的组获取变量数据,例如:
C A B
1 0 1
2 0 0
3 2 2
4 1 0
我想我也可能得到一个 . 行,但出于我的目的,我不在乎。
现在在 R 中。我有已正确读取的相同数据集,但我不知道如何在末尾添加变量(如 CC)或如何对子组执行操作(如 proc 中的 by cc 命令方法)。另外,我应该注意,我的变量不是按任何顺序命名的,而是根据它们所代表的内容命名的。
我想如果有人可以告诉我如何做上述事情,我可以将其概括为我需要做的事情。