小编Kon*_*rad的帖子

使用公共可用数据中的SPARQL下载GeoJSON边界

我有兴趣从statistics.gov.scot下载一些边界文件,这是一个官方统计存储库,用于共享利用SPARQL查询的统计数据.

背景

Statistics.gov.scot提供对多个管理和统计地理区域的GeoJSON边界的访问,例如地方当局管理边界健康委员会.在我的特定情况下,我有兴趣下载一个与数据区有关的GeoJSON边界的数据集.数据区是为在小范围内传播生命结果数据而开发的统计地理区域.通过 statistics.gov.scot访问时,样本数据区看起来像这样:

示例数据区

可在此处访问地理位置和相关数据.相应的GeoJSON数据可在此处获得.

问题

数据区有两次迭代,2004年生产,另一次最近更新.我想下载2004年制作的第一次迭代.根据有关统计实体的信息,我起草了以下查询:

PREFIX entity: <http://statistics.data.gov.uk/def/statistical-entity#>
PREFIX boundaries: <http://statistics.gov.scot/boundaries/>

SELECT ?boundary 
    WHERE {
        entity:introduced <http://reference.data.gov.uk/id/day/2004-02-01>
  }

LIMIT 1000
Run Code Online (Sandbox Code Playgroud)

返回以下错误消息:

Error There was a syntax error in your query: Encountered " "}" "} "" at line 7,
column 3. Was expecting one of: <IRIref> ... <PNAME_NS> ... <PNAME_LN> ...
<BLANK_NODE_LABEL> ... <VAR1> ... <VAR2> ... "true" ... …
Run Code Online (Sandbox Code Playgroud)

rdf sparql opendata geojson linked-data

12
推荐指数
2
解决办法
297
查看次数

在使用管道运算符时将dplyr重命名应用于所有列

我正在使用与下面的摘录对应的导入数据集:

set.seed(1)
dta <- data.frame("This is Column One" = runif(n = 10),
                     "Another amazing Column name" = runif(n = 10),
                     "!## This Columns is so special€€€" = runif(n = 10),
                    check.names = FALSE)
Run Code Online (Sandbox Code Playgroud)

我正在使用这些数据进行一些清理dplyr,我想将列名更改为语法正确的,并删除标点符号作为第二步.到目前为止我尝试了什么:

dta_cln <- dta %>% 
    rename(make.names(names(dta)))
Run Code Online (Sandbox Code Playgroud)

生成错误:

> dta_clean <- dta %>% 
+     rename(make.names(names(dta)))
Error: All arguments to rename must be named.
Run Code Online (Sandbox Code Playgroud)

期望的结果

我想要实现的目标可以在基础上完成:

names(dta) <- gsub("[[:punct:]]","",make.names(names(dta)))
Run Code Online (Sandbox Code Playgroud)

将返回:

> names(dta)
[1] "ThisisColumnOne"          "AnotheramazingColumnname" "XThisColumnsissospecial"
Run Code Online (Sandbox Code Playgroud)

我想达到相同的效果,但使用dyplr%>%.

syntax r dataframe dplyr

10
推荐指数
3
解决办法
9642
查看次数

仅当列存在时才执行dplyr操作

根据对条件dplyr求值的讨论,我想根据传入数据帧中是否存在引用列,有条件地在管道中执行一个步骤.

所产生的结果1)2)应该是相同的.

现有专栏

# 1)
mtcars %>% 
  filter(am == 1) %>%
  filter(cyl == 4)

# 2)
mtcars %>%
  filter(am == 1) %>%
  {
    if("cyl" %in% names(.)) filter(cyl == 4) else .
  }
Run Code Online (Sandbox Code Playgroud)

不可用的列

# 1)
mtcars %>% 
  filter(am == 1)

# 2)    
mtcars %>%
  filter(am == 1) %>%
  {
    if("absent_column" %in% names(.)) filter(absent_column == 4) else .
  }
Run Code Online (Sandbox Code Playgroud)

问题

对于可用列,传递的对象与初始数据帧不对应.原始代码返回错误消息:

错误filter(cyl == 4):'cyl'找不到对象

我尝试了其他语法(没有运气):

>> mtcars %>%
...   filter(am …
Run Code Online (Sandbox Code Playgroud)

r function lazy-evaluation dataframe dplyr

10
推荐指数
4
解决办法
5355
查看次数

理解attr(x,"class")和class(x)之间的区别

背景

我正在看RomainFrançois提出的爵士乐套餐.Romain is_bare_vector使用以下语法定义函数:

is_bare_vector <- function(x) {
  is_vector(x) && !is.object(x) && is.null(attr(x, "class"))
}
Run Code Online (Sandbox Code Playgroud)

对于x <- 1:

attr(x, "class")
# NULL
Run Code Online (Sandbox Code Playgroud)

鉴于:

class(x)
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)

我想理解为什么这两个函数提供不同的答案??attr参考文献的帮助?class

?attr

请注意,一些属性(即class,comment,dim,dimnames, names,row.namestsp)都是经过特殊处理的,并具有可在其上设置的值的限制.(请注意,对于通过级别替换功能应为因子设置的级别,情况并非如此.)

?class

许多R对象都有一个class属性,一个字符向量给出了对象继承的类的名称.(函数 oldClassoldClass<-获取和设置属性,也可以直接完成.)

oop primitive r class

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

大写字母.R等效于excel"PROPER"功能

同事,

我正在查看类似于以下摘录的数据框:

Month   Provider Items
January CofCom   25
july    CofCom   331
march   vobix    12
May     vobix    0
Run Code Online (Sandbox Code Playgroud)

我想将每个单词的首字母大写,并降低每个单词的剩余字母.这将导致数据框类似于下面的数据框:

Month   Provider Items
January Cofcom   25
July    Cofcom   331
March   Vobix    12
May     Vobix    0
Run Code Online (Sandbox Code Playgroud)

总之,我正在寻找R等同于MS Excel中可用的ROPER功能.

string r capitalization toupper tolower

9
推荐指数
4
解决办法
2万
查看次数

将具有相关系数的斜体r添加到ggplot中的散点图中

我尝试使用下面的代码生成,将有斜体的相关系数简单的散点图[R置于情节.

data(mtcars)

# Load required libraries
require(ggplot2)               # To derive the graphs
require(ggthemes)              # To apply ggplot themes to the chart
require(scales)                # For pretty breaks

# Function to generate correlation coefficient for the charts
corr_eqn <- function(x,y, digits = 2) {
  corr_coef <- round(cor(x, y), digits = digits)
  corr_coef <- expression(paste(italic(r)," = ", corr_coef))
  return(corr_coef)
}

# Provide a scatter plot for income and health deprivation
ggplot(mtcars, aes(x = drat, y = wt)) +
  geom_point(shape = 19, …
Run Code Online (Sandbox Code Playgroud)

expression annotations r scatter-plot ggplot2

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

以水平顺序显示闪亮元素中的单选按钮,而不是默认垂直视图

我正在开发一个Shiny应用程序,让民众可以浏览一些时间序列数据.我有许多小部件可以让人们选择变量和分析类型.在这两者之间,我有一个适度的radioButton机制,允许用户选择一些变量的时间序列:

radioButtons("radio_year_select","Year", c("1999" = "1999", "2001" = "2001"))),
Run Code Online (Sandbox Code Playgroud)

代码生成一个简单的小部件:

小部件 - 年

在这个特定应用程序的上下文中,我希望以横向顺序呈现选项,如下所示:

年份:       [X] 1999               [] 2001年

有没有一种简单的方法来实现这一目标?

user-interface r widget radio-button shiny

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

有条件地选择dplyr中的列,其中某些比例的值为NA

数据

我正在使用类似于data.frame下面生成的数据集:

set.seed(1)
dta <- data.frame(observation = 1:20,
                  valueA = runif(n = 20),
                  valueB = runif(n = 20),
                  valueC = runif(n = 20),
                  valueD = runif(n = 20))
dta[2:5,3] <- NA
dta[2:10,4] <- NA
dta[7:20,5] <- NA
Run Code Online (Sandbox Code Playgroud)

列具有NA值,最后一列具有超过60%的观察值NAs.

> sapply(dta, function(x) {table(is.na(x))})
$observation

FALSE 
   20 

$valueA

FALSE 
   20 

$valueB

FALSE  TRUE 
   16     4 

$valueC

FALSE  TRUE 
   11     9 

$valueD

FALSE  TRUE 
    6    14 
Run Code Online (Sandbox Code Playgroud)

问题

我希望能够以dplyr某种方式将管道中的这一列移到select参数中.

尝试

这可以很容易地完成base.例如,要选择低于50%的 …

r filter dataframe na dplyr

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

RStudio中的错误代码诊断报告,当通过源获取功能时

我在RStudio工作的一个简单的分析,我通过source命令来源一些文件.例如,我有一个简单的分析这个文件:

analysis.R

# Settings ----------------------------------------------------------------

data("mtcars")
source("Generic Functions.R")

# Some work ---------------------------------------------------------------

# Makes no sense
mtcars$mpg <- CleanPostcode(mtcars$mpg)
Run Code Online (Sandbox Code Playgroud)

泛型函数文件有我用它来获得图形,做重复的任务一些简单的功能.例如,使用的CleanPostcode函数看起来像这样:

通用函数.R

#' The file provides a set of generic functions 

# String manipulations ----------------------------------------------------

# Create a clean Postcode for matching
CleanPostcode <- function(MessyPostcode) {
  MessyPostcode <- as.character(MessyPostcode)
  MessyPostcode <- gsub("[[:space:]]", "", MessyPostcode)
  MessyPostcode <- gsub("[[:punct:]]", "", MessyPostcode)
  MessyPostcode <- toupper(MessyPostcode)
  cln_str <- MessyPostcode
  return(cln_str)
}
Run Code Online (Sandbox Code Playgroud)

当我运行第一个文件时,对象在全局环境中可用:

全球环境

文件中还有一些其他功能,但它们与描述的问题无关.

然而,RStudio认为对象在范围内不可用,如代码旁边的黄色三角形所示:

问题

有没有办法让RStudio停止这样做.也许改变source命令的东西?我试过local …

environment r scoping rstudio

8
推荐指数
0
解决办法
199
查看次数

R:在yearqtr(动物园)的ggplot中设置scale_x_yearqtr的限制

我正在使用类似于以下摘录的数据集:

head(nomis.lng.agg)
  quarter decile           avg.val
1 2004 Q4                1 5.680000
2 2005 Q1                1 5.745763
3 2005 Q2                1 5.503341
4 2005 Q3                1 5.668224
5 2005 Q4                1 5.244604
6 2006 Q1                1 5.347222
Run Code Online (Sandbox Code Playgroud)

变量quarter是由class yearqtr生成的zoo.其余两列是数字.我目前正在生成使用以下ggplot语法的绘图:

ggplot(data = subset(x = df,
                     subset = df$decile== 1 |
                         df$decile== 10),
       aes(x = quarter, y = avg.val, group = decile)) +
    geom_line(aes(linetype=as.factor(decile)),
              size = 1) +
    scale_x_yearqtr(format = "%YQ%q", n  = 5) +
    xlab("Quarter") + …
Run Code Online (Sandbox Code Playgroud)

r time-series ggplot2 zoo as.date

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