0
我有一个数据帧,其是在不同的位置发现的物种的存在不存在基质(1表示存在替换所有值, 0不存在),如下所示:在一个数据帧使用的值的列在另一个数据帧的行(匹配由列名和列名)
df1<-data.frame(replicate(5,sample(0:1,5,rep=TRUE)))
row.names(df1)<-c("location.1","location.2","location.3","location.4","location.5")
names(df1)<-c("species.1","species.2","species.3","species.4","species.5")
species.1 species.2 species.3 species.4 species.5
location.1 0 1 0 1 1
location.2 1 0 0 1 0
location.3 0 0 1 0 0
location.4 1 0 1 0 1
location.5 0 0 1 0 0
我有具有值对于每个物种,像这样的第二数据帧:
df2<-c(2,4,6,8,10)
df2<-as.matrix(df2)
row.names(df2)<-c("species.1","species.2","species.3","species.4","species.5")
[,1]
species.1 2
species.2 4
species.3 6
species.4 8
species.5 10
我想换成全1在第一数据帧,在列以列为单位,基于第二个数据帧中的匹配值物种名称。生产这个:
species.1 species.2 species.3 species.4 species.5
location.1 0 4 0 8 10
location.2 2 0 0 8 0
location.3 0 0 6 0 0
location.4 2 0 6 0 10
location.5 0 0 6 0 0
我不知道如何去做这个,虽然,并不能找到任何类似的例子在线。
有没有人有任何建议?
尝试'DF1 * DF2 [1 ] [col(df1)]'或'sweep(df1,2,df2 [,1],“*”)'或'mapply(“*”,df1,df2 [,1])' – akrun
非常感谢所有工作都完美无瑕(不敢相信它如此简单,您应该看到我为此编写的代码!) –
谢谢。我发表了我的评论作为解决方案。你也可以勾选[here](http://stackoverflow.com/help/someone-answers) – akrun