我有一个data.frame看起来像这样的.
x a 1
x b 2
x c 3
y a 3
y b 3
y c 2
Run Code Online (Sandbox Code Playgroud)
我想以矩阵形式这样做,所以我可以将它送到热图以制作情节.结果应该类似于:
a b c
x 1 2 3
y 3 3 2
Run Code Online (Sandbox Code Playgroud)
我已尝试cast从reshape包中尝试编写手动函数来执行此操作,但我似乎无法正确执行此操作.
我通过以下步骤得到了一个距离矩阵:
x <- read.table(textConnection('
t0 t1 t2
aaa 0 1 0
bbb 1 0 1
ccc 1 1 1
ddd 1 1 0
' ), header=TRUE)
Run Code Online (Sandbox Code Playgroud)
因此x是具有列标题和行标题的数据框
t0 t1 t2
aaa 0 1 0
bbb 1 0 1
ccc 1 1 1
ddd 1 1 0
require(vegan)
d <- vegdist(x, method="jaccard")
Run Code Online (Sandbox Code Playgroud)
距离矩阵d如下获得:
aaa bbb ccc
bbb 1.0000000
ccc 0.6666667 0.3333333
ddd 0.5000000 0.6666667 0.3333333
Run Code Online (Sandbox Code Playgroud)
通过输入str(d),我发现它不是普通的表格,也不是csv格式.
Class 'dist' atomic [1:6] 1 0.667 0.5 0.333 0.667 ...
..- attr(*, "Size")= …Run Code Online (Sandbox Code Playgroud) 这是对现有问题的扩展:按列名将表转换为矩阵
我正在使用最终答案:https : //stackoverflow.com/a/2133898/1287275
原始CSV文件矩阵大约有150万行,其中包含三列...行索引,列索引和一个值。所有数字均为长整数。底层矩阵是大小约为220K x 220K的稀疏矩阵,每行平均约7个值。
原始的read.table可以正常工作。
x <- read.table("/users/wallace/Hadoop_Local/reference/DiscoveryData6Mo.csv", header=TRUE);
Run Code Online (Sandbox Code Playgroud)
我执行reshape命令时出现问题。
reshape(x, idvar="page_id", timevar="reco", direction="wide")
Run Code Online (Sandbox Code Playgroud)
CPU命中率达到100%,并且永远存在。机器(Mac)的内存比R正在使用的内存更多。我不明白为什么构造稀疏矩阵要花这么长时间。
我正在使用默认的矩阵包。我没有安装任何额外的东西。几天前我刚刚下载了R,所以我应该拥有最新版本。
有什么建议吗?
谢谢,华莱士
在上一条消息中 按列名将表转换为矩阵
我想对csv表或R中的表使用相同的方法.你能不能教我如何修改第一个命令行?
x <- read.table(textConnection(' models cores time 4 1 0.000365 4 2 0.000259 4 3 0.000239 4 4 0.000220 8 1 0.000259 8 2 0.000249 8 3 0.000251 8 4 0.000258' ), header=TRUE)
library(reshape) cast(x, models ~ cores)
Run Code Online (Sandbox Code Playgroud)
我应该使用以下data.csv文件
x <- read.csv(textConnection("data.csv"), header=TRUE)
Run Code Online (Sandbox Code Playgroud)
我应该将以下内容用于名为xyz的R表
x <- xyz(textConnection(xyz), header=TRUE)
Run Code Online (Sandbox Code Playgroud)
是否必须使用textConnection来使用cast命令?
谢谢.