小编adl*_*adl的帖子

r - 将输出从 sf::st_within 转换为向量

我试图在 R 中使用 sf 包来查看 sf 对象是否在另一个具有该st_within函数的sf 对象中。我的问题是这个函数的输出是稀疏几何二进制谓词 -sgbp我需要一个向量作为输出,以便我可以在dplyr之后使用该包进行过滤。这是一个简化的示例:

# object 1: I will test if it is inside object 2
df <- data.frame(lon = c(2.5, 3, 3.5), lat = c(2.5, 3, 3.5), var = 1) %>% 
st_as_sf(coords = c("lon", "lat"), dim = "XY") %>% st_set_crs(4326) %>%
  summarise(var = sum(var), do_union = F) %>% st_cast("LINESTRING")

# object 2: I will test if it contains object 1
box <- data.frame(lon = c(2, 4, 4, 2, …
Run Code Online (Sandbox Code Playgroud)

gis r dataframe dplyr r-sf

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

如何将-sf数据帧列表转换为单个数据帧,R中每行几何?

我正在尝试将以下代码的输出转换为数据帧,其中列表是sfc数据帧,其中列包含简单的要素集合 - 每个观察一个多边形.

以下可重复示例和预期输出的输出:

# Reproducible example:  
library(tidyverse)  
library(sf)  
library(magrittr)   

# define radius for circle  
radius <- 40
r <- units::set_units(radius, units::as_units("nmile"), mode = "standard") 
%>% 
units::set_units(units::as_units("m"), mode = "standard")  

# Sample data: 
df <- data.frame(var = c("abc", "bcd", "cab", "dba"), 
lon = c(45,47,1, -109), 
lat = c(7, 10, 59, 30))

# Creating simple features with sf:
df <- df %>% st_as_sf(coords = c("lon", "lat"), dim = "XY")

# Applying Coordinate reference system WGS84:
df <- df …
Run Code Online (Sandbox Code Playgroud)

r transform r-sf

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

从结尾到开头计算cumsum

我正在尝试计算cumsum从每一组的最后一行到第一行的起点.

样本数据:

t1 <- data.frame(var = "a", val = c(0,0,0,0,1,0,0,0,0,1,0,0,0,0,0))
t2 <- data.frame(var = "b", val = c(0,0,0,0,1,0,0,1,0,0,0,0,0,0,0))
ts <- rbind(t1, t2)
Run Code Online (Sandbox Code Playgroud)

所需格式(按分组var):

ts <- data.frame(var = c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",
                           "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b"), 
                 val = c(2,2,2,2,2,1,1,1,1,1,0,0,0,0,0,2,2,2,2,2,1,1,1,0,0,0,0,0,0,0))
Run Code Online (Sandbox Code Playgroud)

reverse r cumsum

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

具有两个条件和间隔条件内的间隔的 Inner_join

尝试根据多个条件和时间间隔条件连接 2 个数据帧,如下例所示:

# two sample dataframes with time intervals
df1 <- data.frame(key1 = c("a", "b", "c", "d", "e"),
                   key2 = c(1:5),
                   time1 = as.POSIXct(hms::as.hms(c("00:00:15", "00:15:15", "00:30:15", "00:40:15", "01:10:15"))),
                   time2 = as.POSIXct(hms::as.hms(c("00:05:15", "00:20:15", "00:35:15", "00:45:15", "01:15:15")))) %>% 
  mutate(t1 = interval(time1, time2)) %>%
  select(key1, key2, t1)  

df2 <- data.frame(key1 = c("b", "c", "a", "e", "d"),
                   key2 = c(2, 6, 1, 8, 5),
                   sam1 = as.POSIXct(hms::as.hms(c("00:21:15", "00:31:15", "00:03:15", "01:20:15", "00:43:15"))),
                   sam2 = as.POSIXct(hms::as.hms(c("00:23:15", "00:34:15", "00:04:15", "01:25:15", "00:44:15")))) %>% 
mutate(t2 = interval(sam1, sam2)) …
Run Code Online (Sandbox Code Playgroud)

time r inner-join intervals dplyr

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

通过非SF列内连接两个SF对象

我试图使用内部联接或左联接联接两个SF数据帧。这些数据框均在内部具有几何列。我不断收到错误:
check_join(x,y)中的错误:y应该是data.frame; 对于空间连接,请使用st_joinFALSE

以下是可重现的示例:

df1 <- data.frame(
  var = c("a", "b", "c"),
  lon1 = c(20,35,45),
  lat1 = c(50,10,15)
) %>% st_as_sf(coords = c("lon1", "lat1"), dim = "XY") %>%
  st_set_crs(4326)

df2 <- data.frame(
  var = c("a", "b", "c"),
  lon2 = c(15,25,35),
  lat2 = c(5,10,15)
) %>% st_as_sf(coords = c("lon2", "lat2"), dim = "XY") %>%
  st_set_crs(4326)

df <- inner_join(df1, df2, by = "var")
Run Code Online (Sandbox Code Playgroud)

我不想删除几何图形,因为我认为那以后可能会弄乱我的结果,但是欢迎任何解决方案

gis geometry join r r-sf

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

r - 替换 NA 时合并组中的行

我试图找到这个问题的答案,但找不到。如果有答案,我会道歉并立即删除我的问题。

我正在尝试将几行合并为一行(此计算应该在组上单独完成,在这种情况下id可以使用变量进行分组),以便不留下 NA 值。

# initial dataframe
df_start <- data.frame(
  id = c("as", "as", "as", "as", "as", "bs", "bs", "bs", "bs", "bs"), 
  b = c(NA, NA, NA, NA, "A", NA, NA, 6, NA, NA), 
  c = c(2, NA, NA, NA, NA, 7, NA, NA, NA, NA), 
  d = c(NA, 4, NA, NA, NA, NA, 8, NA, NA, NA), 
  e = c(NA, NA, NA, 3, NA, NA, NA, NA, "B", NA), 
  f = c(NA, NA, 5, NA, NA, NA, …
Run Code Online (Sandbox Code Playgroud)

merge row r na dplyr

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

r-从数据框中同一行的两个点创建线串

我想知道是否有办法linestring从新几何列的数据框中的同一行中给定的两个点创建。换句话说,两个点的经度和纬度在数据框中给出,如下所示:

df <- data.frame(id = c("a", "b"), lon1 = c(1,2), lat1 = c(3,4), lon2 = c(5,6), lat2 = c(7,8))  
Run Code Online (Sandbox Code Playgroud)

其中lon1lat1表示所述第一点的坐标和lon2lat2为第二点的坐标。所需的数据帧将具有两行和两列-该id列和一geometry列。

我尝试过,sf::st_linestring但似乎此功能仅适用于矩阵。

所需的数据框:

desired_df <- data.frame(id = c("a", "a", "b", "b"), lon = c(1,2,5,6), lat = c(3,4,7,8)) %>% st_as_sf(coords = c("lon", "lat"), dim = "XY") %>% st_set_crs(4236) %>% group_by(id) %>% summarise(geometry = st_union(geometry), do_union = FALSE) %>% st_cast("LINESTRING")
Run Code Online (Sandbox Code Playgroud)

geometry r line r-sf

2
推荐指数
3
解决办法
665
查看次数

r - 对数据应用函数n次

我想每次使用函数的输出在矢量上应用相同的函数一定次数.

一个带有简单函数的简化示例,仅用于演示:

# sample vector
a <- c(1,2,3)

# function to be applied n times
f1 <- function(x) {
  x^2 + x^3
 }
Run Code Online (Sandbox Code Playgroud)

我想申请f1a,n次数,例如这里可以说3次.

我听说purrr::reduce或者purrr::map()可能是个好主意,但无法使其发挥作用.

期望的输出如果n = 3等于f1(f1(f1(a))).

iteration r function

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

r - 使用 ggplot2、aes_string 和重新排序制作绘图功能

我试图让将要使用的功能ggplot2中,aes_stringreorder但至今没有运气。

基本上,如果我们有一个如下所示的示例数据集:

library(ggplot2)
library(dplyr)

set.seed(123)
dt <- data.frame(
          id = c(1,1,1,2,2),
          a = c("b", "d", "c", "a", "b"),
          b = sample(1:10, 5, replace = F),
          cat = c(1,1,2,2,2)) %>%
    mutate(a = as.factor(a)) %>% 
    as_tibble()
Run Code Online (Sandbox Code Playgroud)

我希望该函数接受以下参数:数据集、过滤变量和用于绘图的两个变量。

这就是我设法做的:

myplot <- function(df, filtval, var1, var2) {
    data <- df %>% filter(id == filtval)

    ggplot(data) + 
        geom_point(
            aes_string(
                x = reorder(var1, var2),
                y = var2)
    )
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当运行它返回错误:

myplot(dt, 1, "a", "b")
Warning message:
    In mean.default(X[[i]], ...) : …
Run Code Online (Sandbox Code Playgroud)

r function ggplot2 dplyr

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

r将列表列转换为字符向量,其中列表是字符

我正在尝试将列表转换为单个字符值,或者基本上是从此开始:

test <- data.frame(a = c(1,1,1,2,2,2), b = c("a", "b", "c", "d", "e", "f" )) %>% 
  group_by(a) %>% summarise(b = list(b))
Run Code Online (Sandbox Code Playgroud)

对此:

test <- data.frame(a = c(1,2), b = c("a, b, c", "d, e, f" )) 
Run Code Online (Sandbox Code Playgroud)

r list vector character dplyr

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

r - 创建反应式过滤器,应用于闪亮的上传的 csv 文件

我正在尝试创建一个闪亮的应用程序,用户可以在其中上传 .csv 文件,然后在该数据帧上应用过滤器,然后使用 ggplot2 绘制绘图。不幸的是,当我尝试从来自应该上传的 .csv 的变量创建选择输入菜单时,我偶然发现了一个问题。

要创建一个简单的示例,我们可以将diamonds数据集导出ggplot2为 .csv 文件:

write.csv(diamonds, "diamonds.csv")
Run Code Online (Sandbox Code Playgroud)

然后创建闪亮的应用程序:

library(shiny)
library(shinyWidgets)
library(ggplot2)

ui <- fluidPage(
    titlePanel("test shiny"),

    # Sidebar with a slider input for number of bins
    sidebarLayout(sidebarPanel(
        fileInput('file1', 'Choose file to upload',
                  accept = c(
                      'text/csv',
                      'text/comma-separated-values',
                      'text/tab-separated-values',
                      'text/plain',
                      '.csv',
                      '.tsv'
                  )
        ),
        tags$hr(),
        pickerInput(
            inputId = "caratx",
            label = "Choose carat",
            choices = c("Select all", unique(user_data$carat)),
            multiple = TRUE
        ),
        selectInput(
            inputId = "clarityx",
            label = "Choose distance: ",
            choices …
Run Code Online (Sandbox Code Playgroud)

r shiny

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

标签 统计

r ×11

dplyr ×5

r-sf ×4

function ×2

geometry ×2

gis ×2

character ×1

cumsum ×1

dataframe ×1

ggplot2 ×1

inner-join ×1

intervals ×1

iteration ×1

join ×1

line ×1

list ×1

merge ×1

na ×1

reverse ×1

row ×1

shiny ×1

time ×1

transform ×1

vector ×1