R-创建存在/不存在df

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 =

我有一个类似于以下内容的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 = 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。顺便说一句,如果答案有帮助,你可以通过投票的方式表示感谢。