gpt4 book ai didi

r - 使用 R 中的 lapply 从分类数据创建子组

转载 作者:行者123 更新时间:2023-12-04 12:19:25 24 4
gpt4 key购买 nike

我想知道你们是否可以回答我的问题。在下面提供的示例数据中,第 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

我现在想采用其中一个分类变量,比方说“C”,如果它是 C,则创建另一个变量(在第 3 列打印 1,否则打印 0)。

combi$NEWVAR[combi$V1=="C"] <-1
combi$NEWVAR[combi$V1!="C" <-0

V1 V2 NEWVAR
1 A 0.484525170875713 0
2 C 0.48046557046473 1
3 C 0.228440979029983 1
4 B 0.216991128632799 0
5 C 0.521497668232769 1
6 D 0.358560319757089 0

我想对 V1 中的每个变量执行此操作,然后使用 lapply 循环:

variables=unique(combi$V1)

loopeddata=lapply(variables,function(x){
combi$NEWVAR[combi$V1==x] <-1
combi$NEWVAR[combi$V1!=x]<-0
}
)

但是我的输出看起来是这样的:

[[1]]
[1] 0

[[2]]
[1] 0

[[3]]
[1] 0

[[4]]
[1] 0

我想要的输出类似于第二个代码块中的表格,但是在第三列上循环时将是 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))

关于r - 使用 R 中的 lapply 从分类数据创建子组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com