R等同于SAS do-loop

问题描述 投票:-1回答:2

为了创建独特的组合,我以前使用下面的SAS代码,我想知道R相当于此。任何人都可以帮我在R做同样的事情,我对R很新,只是探索。

DATA B ;

DO i = 1 to 2 ;

DO j = 1 to 5 ;

DO k = 1 to 4 ;

OUTPUT ;

END ;

END ;

END ;

RUN ;

DATA B ;

SET  B ;

IJK = CATX("-",i,j,k) ;

RUN ;

这将给我以下输出:

Obs i j k ijk

1 1 1 1 1-1-1

2 1 1 2 1-1-2

3 1 1 3 1-1-3 

4 1 1 4 1-1-4 

5 1 2 1 1-2-1 

...........
etc
r sas
2个回答
1
投票
require(dplyr)
expand.grid(i = 1:2, j = 1:5, k = 1:4) %>% 
  arrange(i, j, k) %>% 
  mutate(ijk = paste(i, j, k, sep = '-'))

0
投票

你在尝试这样的事吗?

set.seed(2)

Obs <- 1:20
i <- sample(1:2, 20, replace = TRUE)
j <- sample(1:5, 20, replace = TRUE)
k <- sample(1:4, 20, replace = TRUE)
ijk <- paste(i,j,k, sep="-")
B <- data.frame(Obs,i,j,k,ijk); B

#    Obs i j k   ijk
# 1    1 1 4 4 1-4-4
# 2    2 2 2 2 2-2-2
# 3    3 2 5 1 2-5-1
# 4    4 1 1 1 1-1-1
# 5    5 2 2 4 2-2-4
# 6    6 2 3 4 2-3-4
# 7    7 1 1 4 1-1-4
# 8    8 2 2 2 2-2-2
# 9    9 1 5 3 1-5-3
# 10  10 2 1 4 2-1-4
# 11  11 2 1 1 2-1-1
# 12  12 1 1 1 1-1-1
# 13  13 2 5 3 2-5-3
# 14  14 1 5 4 1-5-4
# 15  15 1 3 2 1-3-2
# 16  16 2 4 4 2-4-4
# 17  17 2 5 4 2-5-4
# 18  18 1 2 4 1-2-4
# 19  19 1 4 3 1-4-3
# 20  20 1 1 3 1-1-3
© www.soinside.com 2019 - 2024. All rights reserved.