小编spe*_*seh的帖子

dplyr - 聚合不正确?

我有dplyr的som问题,group_by函数没有按预期工作.使用汇总,我希望得到输入到group_by语句中的id和year的每个唯一组合的var1的均值.

此代码应创建一个带有id年观察的df,其中我想为每个id和year组合聚合var 1的均值.但是,这不能按预期工作,输出会忽略id,而只会在年份聚合.

df <- data.frame(id=c(1,1,2,2,2,3,3,4,4,5),
                 year=c(2013,2013,2012,2013,2013,2013,2012,2012,2013,2013), 
                 var1=rnorm(10))
Run Code Online (Sandbox Code Playgroud)

dplyr代码:

dfagg <- df %.%
  group_by(id, year) %.%
  select(id, year, var1) %.%
  summarise(
    var1=mean(var1)
    )
Run Code Online (Sandbox Code Playgroud)

结果:

> dfagg
Source: local data frame [8 x 2]
Groups: year

  year        var1
1 2013  0.22924025
2 2012 -0.93073687
3 2013 -0.82351583
4 2012  0.05656113
5 2013 -0.21622021
6 2012  1.91158209
7 2013 -2.67003628
8 2013 -0.72662276
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?

为了确保没有其他包中断dplyr函数,我尝试了以下相同的结果.

dfagg <- df %.%
  dplyr::group_by(id, year) %.%
  dplyr::select(id, year, var1) %.%
  dplyr::summarise(
    var1=mean(var1)
    )
Run Code Online (Sandbox Code Playgroud)

aggregate r dplyr

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

使用 st_distance 计算两组点之间的所有距离

我有两组点作为sf对象存储在 R 中。点对象 x 包含 204,467 个点,点 y 包含 5,297 个点。

理论上,我想计算从 x 中的所有点到 y 中的所有点的距离。我知道这会创建一个庞大的矩阵,但在我的 i7 桌面上使用该st_distance(x, y, by_element=FALSE)sf大约需要 40 分钟。

我想要做的是计算从 x 中的所有点到 y 中的所有点的距离,然后我想将其转换为 a data.frame,其中包含相应 x 和 y 对点的所有变量。这是因为我希望使用 进行聚合方面的灵活性dplyr,例如,我想找到 y 中距离 x 10、50、100 公里以内的点的数量,以及其中x$year < y$year

我成功创建了距离矩阵,其中包含大约 1,083,061,699 个单元格。我知道这是一种非常低效的方法,但它在聚合方面提供了灵活性。欢迎其他建议。

下面是创建两个 sf 点对象并测量它们之间距离的代码。接下来,我想将其转换为包含 x 和 y 中所有变量的 data.frame,但这是我无法继续的地方。

如果我建议的工作流程不可行,有人可以提供替代解决方案来测量到预定义半径内所有点的距离,并使用 x 和 y 中的所有变量创建结果的 data.frame 吗?

# Create two sf point objects 
set.seed(123)
library(sf)


pts1 <- …
Run Code Online (Sandbox Code Playgroud)

r r-sf

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

将矩阵重复n次到列表中

我有一个矩阵,我想在列表中复制n次.显然rep()函数不适用于矩阵,所以有人有一个很好的建议如何使这比我下面的代码更好吗?

谢谢!

# Create sample matrix
jwprox <- matrix(ncol=15,nrow=15)
# Create list of n-times matrices
jwprox <- list(jwprox,jwprox,jwprox)
Run Code Online (Sandbox Code Playgroud)

r list matrix

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

Dplyr - 错误:列''具有不受支持的类型

在data.frame上使用dplyr来计算每个字符变量组的缺失观察数时,我有一个奇怪的问题.这会创建错误"错误:列""具有不受支持的类型.

为了复制它,我创建了一个子集.子集rdata文件在这里可用: rdata文件包括dftest data.frame First.使用我提供的子集,代码:

dftest %>%
  group_by(file) %>%
  summarise(missings=sum(is.na(v131)))
Run Code Online (Sandbox Code Playgroud)

将创建错误:错误:列'file'具有不受支持的类型

str(dftest)返回:

'data.frame':   756345 obs. of  2 variables:
 $ file: atomic  bjir31fl.dta bjir31fl.dta bjir31fl.dta bjir31fl.dta ...
  ..- attr(*, "levels")= chr 
 $ v131: Factor w/ 330 levels "not of benin",..: 6 6 6 6 1 1 1 9 9 9 ...
Run Code Online (Sandbox Code Playgroud)

但是,获取子集的子集并再次运行dplyr命令将创建预期输出.

dftest <- dftest[1:756345,]
dftest %>%
  group_by(file) %>%
  summarise(missings=sum(is.na(v131)))
Run Code Online (Sandbox Code Playgroud)

str(dftest)现在返回:

'data.frame':   756345 obs. of  2 variables:
 $ file: chr  "bjir31fl.dta" "bjir31fl.dta" "bjir31fl.dta" "bjir31fl.dta" ...
 $ v131: Factor w/ 330 levels …
Run Code Online (Sandbox Code Playgroud)

r aggregate-functions dataframe dplyr

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

标签 统计

r ×4

dplyr ×2

aggregate ×1

aggregate-functions ×1

dataframe ×1

list ×1

matrix ×1

r-sf ×1