我有一个包含 663 个元素的向量。我想从等于向量长度(即 663)的向量中创建随机样本。换句话说,我想从 663 个元素的所有可能排序中随机抽取样本。我的目标是创建 N 个随机样本或随机选择的排列的数据框。
我尝试了以下方法:
library(combinat)
perms <- as.data.frame(permn(1:663))
Run Code Online (Sandbox Code Playgroud)
由于有这么多可能的排列,我会收到一条错误消息。
我的下一个想法是创建一个数据框,其行数与我想要的样本/排列一样多,变量与元素一样多(即 663),并使用像sapply()with sample(). 但是,我认为这种方法效率不高。
我也试过:
samples <- replicate(100, table(sample(1:663, 663,replace = F)))
Run Code Online (Sandbox Code Playgroud)
但我只得到一个包含 100 列的数据框。
正如标题所描述的那样,我正在从Excel过渡到R,但我发现实现非常棘手的数据操作在Excel中更直观,而不是R.
我有两个数据框:
A <- read.table(text="Var1 Var2 Var3 Var4
1 0 2 0
3 4 0 0
0 6 0 7", header=T)
B <- read.table(text="VarA VarB
2.24 1.82
3.07 2.97
6.5 7.46", header=T)
Run Code Online (Sandbox Code Playgroud)
我想从A和B创建第3个数据框,如下所示:
Result <- read.table(text="Result1 Result2 Result3 Result4
2.24 NA 1.82 NA
3.07 2.97 NA NA
NA 6.5 NA 7.46", header=T)
Run Code Online (Sandbox Code Playgroud)
因此,如果数据帧的行r和列c中的元素A<> 0,则在数据帧的行r和列中按顺序放置来自数据帧的行的元素. cResultsrB
我有一个数据框A,我想按行方式而不是列方式看起来像B(这也排除了其中的观察NA).这可以通过"融化"功能来实现吗?
A <- read.table(text=" Id1 Id2 Var1 Var2 Var3
1 1 1 2 NA
1 2 NA 3 4
1 3 5 6 7 ", header=T)
B <- read.table(text=" Id1 Id2 NewVar
1 1 1
1 1 2
1 2 3
1 2 4
1 3 5
1 3 6
1 3 7 ", header=T)
Run Code Online (Sandbox Code Playgroud)
我找到了一个类似问题的答案,但功能似乎有点矫枉过正,超出了我目前的R技能.