Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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中的Lappy从分类数据创建子组_R_Variables_Using_Lapply - Fatal编程技术网

使用R中的Lappy从分类数据创建子组

使用R中的Lappy从分类数据创建子组,r,variables,using,lapply,R,Variables,Using,Lapply,我想知道你们这些好心人能否回答我的一个问题。在我下面提供的示例数据中,在第1列中有一个分类变量,在第2列中有一个p值 x <- c(rep("A",0.1*10000),rep("B",0.2*10000),rep("C",0.65*10000),rep("D",0.05*10000)) categorical_data=as.matrix(sample(x,10000)) p_val=as.matrix(runif(10000,0,1)) combi=as.data.frame(cbin

我想知道你们这些好心人能否回答我的一个问题。在我下面提供的示例数据中,在第1列中有一个分类变量,在第2列中有一个p值

x <- c(rep("A",0.1*10000),rep("B",0.2*10000),rep("C",0.65*10000),rep("D",0.05*10000))
categorical_data=as.matrix(sample(x,10000))
p_val=as.matrix(runif(10000,0,1))
combi=as.data.frame(cbind(categorical_data,p_val))
head(combi)

  V1                V2
1  A 0.484525170875713
2  C  0.48046557046473
3  C 0.228440979029983
4  B 0.216991128632799
5  C 0.521497668232769
6  D 0.358560319757089
我想要的输出将类似于第二个代码块中的表,但是当在第三列上循环时,将是A=1,而B,C,D=0。然后B=1,A,C,D=0等等


如果有人能帮助我,我将不胜感激

像这样的东西怎么样:

model.matrix(~ -1 + V1, data=combi)
然后,您可以
cbind
将其发送到
combi
,如果需要:

combi <- cbind(combi, model.matrix(~ -1 + V1, data=combi))

<代码> COMPI> P> <代码>模型。矩阵< /代码>绝对是在R.中实现这一点的方法。但是,您也可以考虑使用<代码>表< /> >

下面是一个使用我在使用
set.seed(1)
时得到的结果的示例(在与随机数据共享示例问题时始终使用seed)


LoopedData我相信有人可以帮助您解决眼前的问题,但您是否介意详细说明您希望通过新变量最终实现的目标?也许有其他方法可以达到你想要的目标。干杯。嗨,谢谢你,亨里克。我想使用wilcox.test(V2~combi$NEWVAR)对不同的输出表进行mann-whitney U秩测试。基本上,我想比较A的排名与B,C,d的组合,然后B与A,C,d的组合等等,这就是第三列的目的。注意,我知道在我的示例中这只是模拟数据,但我的实际数据具有完全相同的格式。干杯那里正在进行一些奇怪的巫术。这正是我想要的,而且没有使用Lappy或创建多个表会获得额外的积分。我将仔细研究model.matrix函数。非常感谢!
[[1]]
[1] 0

[[2]]
[1] 0

[[3]]
[1] 0

[[4]]
[1] 0
model.matrix(~ -1 + V1, data=combi)
combi <- cbind(combi, model.matrix(~ -1 + V1, data=combi))
LoopedData <- table(sequence(nrow(combi)), combi$V1)
head(LoopedData)
#    
#     A B C D
#   1 0 1 0 0
#   2 0 0 1 0
#   3 0 0 1 0
#   4 0 0 1 0
#   5 0 1 0 0
#   6 0 0 1 0

## If you want to bind it back with the original data
combi <- cbind(combi, as.data.frame.matrix(LoopedData))

head(combi)
#   V1                 V2 A B C D
# 1  B 0.0647124934475869 0 1 0 0
# 2  C  0.676612401846796 0 0 1 0
# 3  C  0.735371692571789 0 0 1 0
# 4  C  0.111299667274579 0 0 1 0
# 5  B 0.0466546178795397 0 1 0 0
# 6  C  0.130910312291235 0 0 1 0