使用R中的Lappy从分类数据创建子组
我想知道你们这些好心人能否回答我的一个问题。在我下面提供的示例数据中,在第1列中有一个分类变量,在第2列中有一个p值使用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
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