【发布时间】:2021-06-27 17:29:27
【问题描述】:
我知道我每天只需使用dplyr 就可以做到这一点,但这里的重点是学习使用 SQL 创建和操作小型关系数据库。
-
Price需要转成数值。删除“R”和中间的空格。 -
coordinates需要变成2个坐标Long和Lat -
floor size需要从字符串中转换为数字,去掉空格和末尾的“m^2”。
最小工作示例
# Data to copy into sheet
Price coordinates floor.size surburb date
R 1 750 000 -33.93082074573843, 18.857342125467635 68 m² Jhb 2021-06-24
R 1 250 000 -33.930077157927855, 18.85420954236195 56 m² Jhb 2021-06-17
R 2 520 000 -33.92954929205658, 18.857504799977896 62 m² Jhb 2021-06-24
在 R markdown 中操作的代码
```{r}
#install.packages("RSQLite", repos = "http://cran.us.r-project.org")
library(readxl)
library(dplyr)
library(RSQLite)
library(DBI)
library(knitr)
db <- dbConnect(RSQLite::SQLite(), ":memory:")
knitr::opts_chunk$set(echo = TRUE)
knitr::opts_chunk$set(connection = "db")
# Import data
dataH <- read_excel("C:/Users/Dell/Desktop/exampledata.xlsx")
```
```{sql, connection = db}
# SQL code passed directly
```
编辑 1:
@Onyambu 的回答几乎有效。它正在产生坐标错误。例如,在下面的图像中,当coordinate 为“-33.930989501123, 18.857270308516927”时,最后两个坐标应该有一个以“18.85”而不是“.85”开头的Long。我该如何解决这个问题?
【问题讨论】:
-
你看过
sqldf吗?它允许对data.frame(s) 进行 SQL 查询。 -
请使用
dput(x)发布您的数据,因为我们不能在没有手动提取的情况下直接复制和粘贴。 (嵌入的空格使得read.table和家人不能只解析它。) -
您还需要具体说明您使用的数据库引擎。 mysql、sqllite、postgresql等都有不同的功能需要实现。
标签: sql r r-markdown data-wrangling rsqlite