Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R中的一组因子创建组合ID号_R - Fatal编程技术网

从R中的一组因子创建组合ID号

从R中的一组因子创建组合ID号,r,R,有谁能帮我计算出一个新的变量,它将对一些因素的不同组合进行编号 假设受试者内有4个因素A、B、C、D,10名受试者中的任何一名受试者的每个组合都有8次重复,这就是我的数据如何表示其实际结构: library(AlgDesign) #for generating a factorial design) df <-gen.factorial(c(2,2,2,2,8,10), factors = "all", varNames = c("A", "B

有谁能帮我计算出一个新的变量,它将对一些因素的不同组合进行编号

假设受试者内有4个因素A、B、C、D,10名受试者中的任何一名受试者的每个组合都有8次重复,这就是我的数据如何表示其实际结构:

library(AlgDesign) #for generating a factorial design)
df <-gen.factorial(c(2,2,2,2,8,10), factors = "all", 
                      varNames = c("A", "B", "C", "D", "replication", "Subject"))
> head(df)
  A B C D replication Subject
1 1 1 1 1           1       1
2 2 1 1 1           1       1
3 1 2 1 1           1       1
4 2 2 1 1           1       1
5 1 1 2 1           1       1
6 2 1 2 1           1       1
> tail(df)
     A B C D replication Subject
1275 1 2 1 2           8      10
1276 2 2 1 2           8      10
1277 1 1 2 2           8      10
1278 2 1 2 2           8      10
1279 1 2 2 2           8      10
1280 2 2 2 2           8      10
在本例中,复制只是为了强制执行8次重复而生成的,但它不会对组合本身进行编码

我的原始数据只有变量A、B、C、D和Subject,我希望以一种具有不同值的方式计算复制 但是对于A,B,C,D的每个组合

您可以删除任何不必要的变量。我把它们放在那里,让你看看这个过程是如何运作的

另一个选择是这样

# create a look up table based on unique combinations and assign them a number
df %>% distinct(A,B,C,D) %>% mutate(replication_upd = row_number()) -> look_up

# join back to original dataset
df %>% inner_join(look_up, by=c("A","B","C","D")) %>% tbl_df()

# # A tibble: 1,280 x 7
#   A     B     C     D     replication Subject replication_upd
#   <fct> <fct> <fct> <fct> <fct>       <fct>             <int>
# 1 1     1     1     1     1           1                     1
# 2 2     1     1     1     1           1                     2
# 3 1     2     1     1     1           1                     3
# 4 2     2     1     1     1           1                     4
# 5 1     1     2     1     1           1                     5
# 6 2     1     2     1     1           1                     6
# 7 1     2     2     1     1           1                     7
# 8 2     2     2     1     1           1                     8
# 9 1     1     1     2     1           1                     9
# 10 2     1     1     2     1           1                    10
# # ... with 1,270 more rows
请注意,第一种方法根据我们创建的新变量(即订单A、B、C、D)选择数字,第二种方法使用数据集的初始顺序为每个唯一组合选择数字

# create a look up table based on unique combinations and assign them a number
df %>% distinct(A,B,C,D) %>% mutate(replication_upd = row_number()) -> look_up

# join back to original dataset
df %>% inner_join(look_up, by=c("A","B","C","D")) %>% tbl_df()

# # A tibble: 1,280 x 7
#   A     B     C     D     replication Subject replication_upd
#   <fct> <fct> <fct> <fct> <fct>       <fct>             <int>
# 1 1     1     1     1     1           1                     1
# 2 2     1     1     1     1           1                     2
# 3 1     2     1     1     1           1                     3
# 4 2     2     1     1     1           1                     4
# 5 1     1     2     1     1           1                     5
# 6 2     1     2     1     1           1                     6
# 7 1     2     2     1     1           1                     7
# 8 2     2     2     1     1           1                     8
# 9 1     1     1     2     1           1                     9
# 10 2     1     1     2     1           1                    10
# # ... with 1,270 more rows