这个问题已经有答案了:
How do I count the number of times any two given values occur together in a row in R?(2个答案)
17天前关闭
我正在尝试从存在和不存在数据创建一个共存矩阵。数据结构目前测量每个物种是否拥有每种细胞类型(X,Y或Z)。如果细胞类型存在于该物种中,则为1,如果不存在于该物种中,则为0。
x <- c(1, 1, 1)
y <- c(0, 1, 0)
z <- c(1, 1, 0)
df_pa_species<-data.frame(species, x, y, z)
字符串
它会生成一个类似于下面的嵌套框架:
Species X Y Z
A 1 0 1
B 1 1 1
C 1 0 0
型
我试图生成一个矩阵,它将计算两种细胞类型共出现的次数。在这个例子中,X与Z共出现两次,Y共出现一次。我的理想输出将是这样的矩阵:
X Y Z
X - 1 2
Y 1 - 1
Z 2 1 -
型
我正在努力制作这个矩阵,因为每行1的数量因物种而异。我尝试将数据转换为以下格式:
db4 <- data.frame(df_pa_species[1], cols = apply(df_pa_species[-1], 1, function(x)
paste(names(x)[x==1], collapse=",")), stringsAsFactors = FALSE)
Species cols
A x,z
B x,y,z
C x
型
最终目标是让它更接近我看到的这些例子:(How to calculate a (co-)occurrence matrix from a data frame with several columns using R?,Transforming matrix of presence/absence to Data.frame of vertice connection. (Removing duplicated rows with eeuqal unordered values))然而,我的行的总和并不相同,我似乎不能让这些工作不平等的行。
1条答案
按热度按时间y4ekin9u1#
您可以使用
crossprod
来执行此操作字符串