我想知道R中是否有内置函数可以找到两个数组之间的余弦相似度(或余弦距离)?
目前,我实现了自己的功能,但我不禁认为R应该已经配备了一个.
我在R中有一个示例代码如下:
library(igraph)
rm(list=ls())
dat=read.csv(file.choose(),header=TRUE,row.names=1,check.names=T) # read .csv file
m=as.matrix(dat)
net=graph.adjacency(adjmatrix=m,mode="undirected",weighted=TRUE,diag=FALSE)
Run Code Online (Sandbox Code Playgroud)
我使用csv文件作为输入,其中包含以下数据:
23732 23778 23824 23871 58009 58098 58256
23732 0 8 0 1 0 10 0
23778 8 0 1 15 0 1 0
23824 0 1 0 0 0 0 0
23871 1 15 0 0 1 5 0
58009 0 0 0 1 0 7 0
58098 10 1 0 5 7 0 1
58256 0 0 0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
在此之后,我使用以下命令检查重量值:
E(net)$weight
Run Code Online (Sandbox Code Playgroud)
预期输出有点像这样:
> E(net)$weight
[1] …Run Code Online (Sandbox Code Playgroud) 我有一个名单列表,如:
names = ['A', 'B', 'C', 'D']
Run Code Online (Sandbox Code Playgroud)
和文件清单,在每个文件中提到了一些这些名称.
document =[['A', 'B'], ['C', 'B', 'K'],['A', 'B', 'C', 'D', 'Z']]
Run Code Online (Sandbox Code Playgroud)
我想得到一个输出作为共现矩阵,如:
A B C D
A 0 2 1 1
B 2 0 2 1
C 1 2 0 1
D 1 1 1 0
Run Code Online (Sandbox Code Playgroud)
在R中有一个针对这个问题的解决方案(创建共生矩阵),但我无法在Python中实现.我想在熊猫中做到这一点,但还没有进展!
我是 R 的新手,目前正在处理边缘列表形式的协作数据,该列表具有 32 列和大约 200.000 行。我想根据国家之间的相互作用创建一个(共)现矩阵。但是,我想通过对象的总数来计算交互次数。
如果在一行中“England”出现了 3 次而“China”只出现了一次,结果应该是下面的矩阵。
England China
England 3 3
China 3 1
Run Code Online (Sandbox Code Playgroud)
df <- data.frame(ID = c(1,2,3,4),
V1 = c("England", "England", "China", "England"),
V2 = c("Greece", "England", "Greece", "England"),
V32 = c("USA", "China", "Greece", "England"))
Run Code Online (Sandbox Code Playgroud)
因此,示例数据框当前看起来像这样:
ID V1 V2 ... V32
1 England Greece USA
2 England England China
3 China Greece Greece
4 England England England
.
.
.
Run Code Online (Sandbox Code Playgroud)
我想逐行计算(共)出现并且与顺序无关,以获得一个(共)出现矩阵,该矩阵说明边缘循环(例如英格兰 - 英格兰)的低频,这导致以下结果:
China England Greece USA
China 2 2 2 …Run Code Online (Sandbox Code Playgroud) 我有一个简单的矩阵,例如
test <- matrix(c("u1","p1","u1","p2","u2","p2","u2",
"p3","u3","p1","u4","p2","u5","p1",
"u5","p3","u6","p3","u7","p4","u7",
"p3","u8","p1","u9","p4"),
ncol=2,byrow=TRUE)
colnames(test) <- c("user","product")
test1<-as.data.frame(test)
Run Code Online (Sandbox Code Playgroud)
测试:
user product
1 u1 p1
2 u1 p2
3 u2 p2
4 u2 p3
5 u3 p1
6 u4 p2
7 u5 p1
8 u5 p3
9 u6 p3
10 u7 p4
11 u7 p3
12 u8 p1
13 u9 p4
Run Code Online (Sandbox Code Playgroud)
我想算一下有多少用户一起购买产品对,比如p1&p2,p2和p3 ......
table(test1$product,test1$product) 给我这个:
p1 p2 p3 p4
p1 4 0 0 0
p2 0 3 0 0
p3 0 0 4 0
p4 0 0 …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据框(这只是一个子集,实际上数据集有2724098行)
> head(dat)
chr start end enhancer motif
chr10 238000 238600 9_EnhA1 GATA6
chr10 238000 238600 9_EnhA1 GATA4
chr10 238000 238600 9_EnhA1 SRF
chr10 238000 238600 9_EnhA1 MEF2A
chr10 375200 375400 9_EnhA1 GATA6
chr10 375200 375400 9_EnhA1 GATA4
chr10 440400 441000 9_EnhA1 GATA6
chr10 440400 441000 9_EnhA1 GATA4
chr10 440400 441000 9_EnhA1 SRF
chr10 440400 441000 9_EnhA1 MEF2A
chr10 441600 442000 9_EnhA1 SRF
chr10 441600 442000 9_EnhA1 MEF2A
Run Code Online (Sandbox Code Playgroud)
我能够将我的数据集转换为这种格式,其中chr,start,end和enhancer组代表一个ID:
> dat
id motif
1 GATA6
1 GATA4
1 SRF
1 …Run Code Online (Sandbox Code Playgroud) 我有一个这样的数据框。的id每一行的是唯一的,并且type限定了该组的id。
id type
a a1
b a1
c a2
d a3
e a4
f a4
Run Code Online (Sandbox Code Playgroud)
我想制作一个如下所示的矩阵。如果两者id属于同一个type,则值为1 ,否则为 0。
a b c d e f
a 1 1 0 0 0 0
b 1 1 0 0 0 0
c 0 0 1 0 0 0
d 0 0 0 1 0 0
e 0 0 0 0 1 1
f 0 0 0 0 1 1
Run Code Online (Sandbox Code Playgroud)
数据框很大(超过 7 万行),我不知道如何在 R …
R新手.我正在尝试使用水平数据创建共生矩阵.我想知道哪些元素在行中共同出现'TRUE'.
每行代表一篇文章.每篇文章都有许多标记元素存在与否的真/假变量.这里有100个元素,缩写为10k以上.所以10,000 x 101数据帧.
dat <- read.table(text='"article" "element1" "element2" "element3" "element4"
1 "a house a home" "TRUE" "TRUE" "FALSE" "FALSE"
2 "cabin in the woods" "TRUE" "TRUE" "FALSE" "FALSE"
3 "motel is a hotel" "TRUE" "FALSE" "TRUE" "FALSE"', header=TRUE)
Run Code Online (Sandbox Code Playgroud)
我尝试跟随这个共现问题(创建共生矩阵),但似乎由于数据的组织方式不同,这种方法不起作用.
如果100个元素x 100个元素,那么有用的将是矩阵.有人有建议吗?
在这个一般领域有很多问题都有很好的解决方案,但我很难将它们应用到我的数据中。我有长格式数据,其中一列为我们提供观察结果,另一列为我们提供观察结果中的成员。我想做的就是计算每个成员与其他成员同时出现的次数。
\n假设我有以下数据集:
\ndf <- data.frame(salad = c(rep("Green", 4), rep("Caprese", 3), rep("Fruit", 3)),\n ingredients = c("Lettuce", "Tomato", "Onion", "Olives",\n "Tomato", "Onion", "Mozzarella",\n "Melon", "Orange", "Tomato"))\n\ndf\n\n salad ingredients\n1 Green Lettuce\n2 Green Tomato\n3 Green Onion\n4 Green Olives\n5 Caprese Tomato\n6 Caprese Onion\n7 Caprese Mozzarella\n8 Fruit Melon\n9 Fruit Orange\n10 Fruit Tomato\nRun Code Online (Sandbox Code Playgroud)\n我想要做的是生成一个包含所有可能的成员(成分)组合的表格,并计算它们在观察(沙拉)中同时出现的次数。它看起来像这样:
\nresults\n\n ingredient_A ingredient_B count\n1 Lettuce Tomato 1\n2 Lettuce Onion 1\n3 Lettuce Olives 1\n4 Lettuce Mozzarella 0\n5 Lettuce Melon 0\n6 Lettuce Orange 0\n7 Tomato Onion 2\n8 Tomato Olives 1\n9 Tomato …Run Code Online (Sandbox Code Playgroud)