如何在R数据帧的每一行中创建固定数目为1的0和1的组合?
要创建0和1数据帧的组合,我们可以将expand.grid函数与rep函数一起使用。如果我们要在每行中创建固定数目为1的0和1的组合,则可以将rowSums函数与适当的总和值一起使用。例如,要使行包含少于三个1,则将rowSums从网格中提取出来。
例1
First<−expand.grid(rep(list(0:1),3)) First输出结果
Var1 Var2 Var3 1 0 0 0 2 1 0 0 3 0 1 0 4 1 1 0 5 0 0 1 6 1 0 1 7 0 1 1 8 1 1 1
创建每行中小于或等于2的1的组合-
示例
First<−First[rowSums(First)<3,] First输出结果
Var1 Var2 Var3 1 0 0 0 2 1 0 0 3 0 1 0 4 1 1 0 5 0 0 1 6 1 0 1 7 0 1 1
例2
Second<−expand.grid(rep(list(0:1),4)) Second输出结果
Var1 Var2 Var3 Var4 1 0 0 0 0 2 1 0 0 0 3 0 1 0 0 4 1 1 0 0 5 0 0 1 0 6 1 0 1 0 7 0 1 1 0 8 1 1 1 0 9 0 0 0 1 10 1 0 0 1 11 0 1 0 1 12 1 1 0 1 13 0 0 1 1 14 1 0 1 1 15 0 1 1 1 16 1 1 1 1
示例
Second<−Second[rowSums(Second)<4,] Second输出结果
Var1 Var2 Var3 Var4 1 0 0 0 0 2 1 0 0 0 3 0 1 0 0 4 1 1 0 0 5 0 0 1 0 6 1 0 1 0 7 0 1 1 0 8 1 1 1 0 9 0 0 0 1 10 1 0 0 1 11 0 1 0 1 12 1 1 0 1 13 0 0 1 1 14 1 0 1 1 15 0 1 1 1
范例3
Third<−expand.grid(rep(list(0:1),5)) Third输出结果
Var1 Var2 Var3 Var4 Var5 1 0 0 0 0 0 2 1 0 0 0 0 3 0 1 0 0 0 4 1 1 0 0 0 5 0 0 1 0 0 6 1 0 1 0 0 7 0 1 1 0 0 8 1 1 1 0 0 9 0 0 0 1 0 10 1 0 0 1 0 11 0 1 0 1 0 12 1 1 0 1 0 13 0 0 1 1 0 14 1 0 1 1 0 15 0 1 1 1 0 16 1 1 1 1 0 17 0 0 0 0 1 18 1 0 0 0 1 19 0 1 0 0 1 20 1 1 0 0 1 21 0 0 1 0 1 22 1 0 1 0 1 23 0 1 1 0 1 24 1 1 1 0 1 25 0 0 0 1 1 26 1 0 0 1 1 27 0 1 0 1 1 28 1 1 0 1 1 29 0 0 1 1 1 30 1 0 1 1 1 31 0 1 1 1 1 32 1 1 1 1 1
示例
Third<−Third[rowSums(Third)<3,] Third输出结果
1 0 0 0 0 0 2 1 0 0 0 0 3 0 1 0 0 0 4 1 1 0 0 0 5 0 0 1 0 0 6 1 0 1 0 0 7 0 1 1 0 0 9 0 0 0 1 0 10 1 0 0 1 0 11 0 1 0 1 0 13 0 0 1 1 0 17 0 0 0 0 1 18 1 0 0 0 1 19 0 1 0 0 1 21 0 0 1 0 1 25 0 0 0 1 1