R-创建存在/不存在df
我有一个类似于以下内容的data.frame:R-创建存在/不存在df,r,dataframe,R,Dataframe,我有一个类似于以下内容的data.frame: Species<-c("a","b","c","d") Samples<-c(1,2,3,4,5,6) species<-sample(Species,20,replace=TRUE) samples=sample(Samples,20,replace=TRUE) df <- data.frame(samples,species) 物种这个怎么样: > reshape2::dcast(df,formula =
Species<-c("a","b","c","d")
Samples<-c(1,2,3,4,5,6)
species<-sample(Species,20,replace=TRUE)
samples=sample(Samples,20,replace=TRUE)
df <- data.frame(samples,species)
物种这个怎么样:
> reshape2::dcast(df,formula = samples ~ species)
samples a b c d
1 1 0 0 1 3
2 2 0 3 1 0
3 3 2 1 0 1
4 4 0 1 0 1
5 5 1 1 2 1
6 6 0 0 0 1
正如阿南达在评论中已经提到的,您可以使用表
,例如:
as.data.frame(with(df, table(samples, species)) > 0L) +0L
# a b c d
#1 1 0 1 1
#2 1 1 0 1
#3 1 0 1 0
#4 1 1 1 1
#5 1 0 0 1
#6 0 1 1 0
我在这里使用的数据是:
Species <- c("a","b","c","d")
Samples <- 1:6
set.seed(99)
df <- data.frame(samples = sample(Samples, 20, replace=TRUE),
species = sample(Species, 20, replace=TRUE))
您可能正在寻找的物种是model.matrix
或table
@Dominic Comtois,谢谢。阿南达,我想这会补充它,对吗?df0)Np!我错过了0-1的比赛。如果使用df>0技巧,只需小心samples列,因为它们也会变成1!好的,我明白了。这对我来说很有效,因为在data.frame中,我处理的列总是有1或0。这是因为具有特定种类的样本不会出现多次。我想您可以将其简化为as.data.frame((table(df)>0L)+0L)
@DavidArenburg,对于样本数据为true,但如果实际data.frame包含的列数超过这两列,需要显式地调用列。这两种方法对我都很好。唯一的区别是,在不显式调用列的情况下,样本不会变成变量,而在@初学者提出的方法中,样本会变成变量。非常感谢。非常欢迎,@Gil33。顺便说一句,如果答案有帮助,你可以通过投票的方式表示感谢。