我有一个大型数据集,我试图通过以下方式进行离散并创建一个三维表面图:
rowColFoVCell wpbCount Feret
1 001001001001 1 0.58
2 001001001001 1 1.30
3 001001001001 1 0.58
4 001001001001 1 0.23
5 001001001001 2 0.23
6 001001001001 2 0.58
此数据集中目前有695302行。我试图根据第二列来区分第三个'Feret'列,因此对于每个'wpbCount'bin,'Feret'列。
我认为解决方案将涉及使用剪切,但我不知道如何解决这个问题。我想最终得到这样的数据框:
wpbCount Feret Count
1 1 [0.0,0.2] 3
2 1 [0.2,0.4] 5
3 1 [0.4,0.6] 6
4 1 [0.8,0.8] 9
5 2 [0.0,0.2] 6
6 2 [0.4,0.6] 23
答案 0 :(得分:1)
这是为了回答第一部分:
创建一些数据
DF <- data.frame(wpbCount = sample(1:1000, 1000),
Feret = sample(seq(0, 1, 0.001), 1000))
1)即将离职 使用cut = right = FALSE,间隔为[) 我通常认为这比默认的
更有用DF$cut_it <- cut(DF$Feret, right = FALSE,
breaks = c(0, 0.2, 0.4, 0.6, 0.8, 1))
2)汇总
TABLE&lt; - data.frame(table(DT $ cut_it))
编辑另一次尝试
library(data.table)
DT <- data.table(DF)
DT <- DT[, list(wpbCount = length(wpbCount),
Feret = length(Feret)
), by=cut_it]
也许你只是想要离散化而不是聚合。 试试这个:
DF2 <- data.frame(wpbCount = sample(1:3, 1000, replace=T),
Feret = sample(seq(0, 1, 0.001), 1000))
DF2$Feret2 <- cut(DF$Feret, right = FALSE,
breaks = c(0, 0.2, 0.4, 0.6, 0.8, 1.1))
DF2 <- DF2[, c(1, 3)]
答案 1 :(得分:1)
非常感谢您的帮助,我在R中使用了以下功能:
x $ bin&lt; - cut(x $ Feret,right = FALSE,breaks = seq(0,max(wpbFeatures $ Feret),by = 0.1))
y&lt; -aggregate(x $ bin,by = x [c('wpbCount','bin')],length)
根据您的建议,我能够获得我需要的数据框:
wpbCount | bin | X
1 [0.2,0.3)72
2 [0.2,0.3)142
3 [0.2,0.3)224
4 [0.2,0.3] 299
5 [0.2,0.3] 421
6 [0.2,0.3] 479
现在我需要在3D中绘制这个,我不知道如何使用非数字列,即bin列是因子。
有谁知道如何将这三列相互映射?
答案 2 :(得分:1)
查看此link。 有一些3d图。但是,3d图不是分析数据的最佳工具。 如果您坚持使用3d方法,请尝试stat_contout() 来自ggplot2包。
然而,一个可能更好的评价是在2d做一些图,或使用facet_grid()。 再看看ggplot2 current documentation。
根据您的上一个答案(未经测试)尝试此操作:
ggplot(DF, aes(wpbCount , x)) +
geon_point() +
facet_grid(. ~ bin)
我们的想法是使用因子变量(在本例中为bin)来构图。