小编Lau*_*šys的帖子

凸包面积递增

我想使用凸包在点列表周围画一条线。但是,我希望该面积大于最小凸包。我该如何实现这一目标。PS 我正在使用 ConvexHull 的 scipy.spatial 实现,但是它只找到点列表周围的最小区域。

在此输入图像描述

python math geometry

4
推荐指数
1
解决办法
2202
查看次数

在 R 中拆分数据框时删除列

我正在尝试按列拆分数据表,但是一旦我获得数据表列表,它们仍然包含数据表被拆分的列。拆分完成后,我将如何删除此列。或者更优选地,有没有办法如何删除多个列。

这是我的代码:

x <- rnorm(10, mean = 5, sd = 2)
y <- rnorm(10, mean = 5, sd = 2)
z <- sample(5, 10, replace = TRUE)
dt <- data.table(x, y, z)

split(dt, dt$z)
Run Code Online (Sandbox Code Playgroud)

生成的数据表子集看起来像这样

$`1`
          x        y z
1: 6.179790 5.776683 1
2: 5.725441 4.896294 1
3: 8.690388 5.394973 1

$`2`
          x        y z
1: 5.768285 3.951733 2
2: 4.572454 5.487236 2

$`3`
          x        y z
1: 5.183101 8.328322 3
2: 2.830511 3.526044 3

$`4`
          x        y z
1: …
Run Code Online (Sandbox Code Playgroud)

r data.table

2
推荐指数
1
解决办法
1837
查看次数

使用R中的data.table从组中删除异常值

我有一个包含组列的data.table对象.我试图从每个组中删除异常值,但是我无法想出那个很好的解决方案.我的data.table可以使用简单的脚本构建:

col1 <- rnorm(30, mean = 5, sd = 2)
col2 <- rnorm(30, mean = 5, sd = 2)
id <- seq(1, 30)
group <- sample(4, 30, replace = TRUE)
dt <- data.table(id, group, col1, col2)
Run Code Online (Sandbox Code Playgroud)

我一直在尝试按组变量拆分data.frame,但是,它太乱了.如何在没有太多数据转换的情况下"轻松"从data.table中的每个组中"删除"前n%的异常值?

r data.table

1
推荐指数
1
解决办法
1412
查看次数

使用data.table一般聚合列

我正在使用data.table包尝试一般的聚合数据.我有多个要汇总的列.我使用以下脚本创建初始数据表:

library(data.table)
dt <- data.table(x.1 = rnorm(10, 20, 3), x.2 = rnorm(10, 20, 3), x.3 = rnorm(10, 20, 3),
                 y.1 = rnorm(10, 20, 3), y.2 = rnorm(10, 20, 3), y.3 = rnorm(10, 20, 3),
                 z.1 = rnorm(10, 20, 3), z.2 = rnorm(10, 20, 3), z.3 = rnorm(10, 20, 3))
Run Code Online (Sandbox Code Playgroud)

我想要实现的是通过对每个组应用总和来聚合列{x1,x2,x3,y1,y2,y3,z1,z2,z3} => {x.total,y.total,z.total}列.

我可以使用for循环这样做:

prefixes <- c('x', 'y', 'z')
initial.colnames <- c(names(dt))

for (i in 1:nrow(dt)){
  for (pref in prefixes){
    dt[,eval(paste0(pref, '.total')) := sum(dt[i, eval(grep(pref, initial.colnames))]), with = TRUE]
  }
} …
Run Code Online (Sandbox Code Playgroud)

r data.table

0
推荐指数
2
解决办法
110
查看次数

data.table中的函数参数

我正在尝试计算数据表中每列的标准统计大小(即方差),可以通过以下方式创建:

library(data.table)
x <- rnorm(10)
y <- rnorm(10)
z <- rnorm(10)
dt <- data.table(x, y, z)
dt[,lapply(.SD, var)]
Run Code Online (Sandbox Code Playgroud)

而且效果很好.但是,如果我的数据表中有NA,我想使用函数参数,如:

dt[,lapply(.SD, var(na.rm = T))]
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

Error in match.fun(FUN) : 
  'var(x = dt, na.rm = T)' is not a function, character or symbol
Run Code Online (Sandbox Code Playgroud)

我无法想出这个解决方案.有谁知道如何处理这个问题?

r data.table

-1
推荐指数
1
解决办法
140
查看次数

标签 统计

data.table ×4

r ×4

geometry ×1

math ×1

python ×1