我了解窗口函数,但不明白为什么它们被称为窗口函数。当我们说“窗口”时,它既是分区子句,又是 order by 子句吗?
如果存储过程包含多个语句,例如首先是 an insert,然后是 an update,最后是 a deletes ,并且存储过程在 的中间被终止delete,那么insert和update是否也必须回滚?或者它只是回滚delete隐式事务?
我对 Microsoft SQL Server Management Studio (SSMS) 中的某些“视图”(表)有阅读权。我连接,进行我的查询并将文件导出为 csv,然后在 R 中读取它。现在我想在 R 中进行我的查询。我花了几个小时阅读这个,但仍然不明白我的代码应该是什么样子进行连接。我经常使用 tidyverse 中的软件包,并且看到有一个 dbplyr pacakge。
我连接到 SSMS 时的信息是:1)服务器类型:数据库引擎 2)服务器名称:我有这个。3) 身份验证:Windows 身份验证。4)用户名:我有这个。
我不需要密码(也许是因为我在我的工作网络?)
有人可以编写完整的代码(包括我必须加载哪些库)以访问 SSMS 中的视图。所以我安装了这些软件包:
library(DBI)
library(dplyr)
library(dbplyr)
library(odbc)
Run Code Online (Sandbox Code Playgroud)
然后我运行以下代码:
con <- dbConnect(odbc::odbc(),
Driver = "SQL Server",
Server = "something",
user = "something\\my_username",
Trusted_Connection = "True")
dbListTables(con)
Run Code Online (Sandbox Code Playgroud)
但是我无法看到我需要的视图或表格。这是一个巨大的数据库。实际上,当我使用 SSMS 时,有很多数据库,而我只能访问该数据库中的某些视图。
我有以下示例:
df <- mtcars
plot <- df %>%
mutate(carb=as.character(carb)) %>%
group_by(carb) %>%
nest() %>%
mutate(plot=map(data, function(.x){ .x %>%
ggplot() +
geom_bar(aes(mpg))
}))
print(plot)
# A tibble: 6 x 3
carb data plot
<chr> <list> <list>
1 4 <tibble [10 x 10]> <S3: gg>
2 1 <tibble [7 x 10]> <S3: gg>
3 2 <tibble [10 x 10]> <S3: gg>
4 3 <tibble [3 x 10]> <S3: gg>
5 6 <tibble [1 x 10]> <S3: gg>
6 8 <tibble [1 x …Run Code Online (Sandbox Code Playgroud) 所以我正在尝试翻译一些dplyr代码。我试图从将dplyr转换为data.table的程序包中获得帮助,但仍然无法正常工作。错误是row_number来自dplyr..
我需要dplyr代码中的所有步骤(即使在这里没有用mtcars)
library(dplyr)
library(dtplyr) # from https://github.com/tidyverse/dtplyr
library(data.table)
mtcars %>%
distinct(mpg, .keep_all = TRUE) %>%
group_by(am) %>%
arrange(mpg, .by_group = TRUE) %>%
mutate(row_num = LETTERS[row_number()]) %>%
ungroup()
# using dtplyr
dt <- lazy_dt(mtcars)
dt %>%
distinct(mpg, .keep_all = TRUE) %>%
group_by(am) %>%
arrange(mpg, .by_group = TRUE) %>%
mutate(row_num = LETTERS[row_number()]) %>%
ungroup() %>%
show_query()
#> unique(`_DT1`, by = "mpg")[order(am, mpg)][, `:=`(row_num = c("A",
#> "B", "C", "D", "E", "F", "G", "H", "I", …Run Code Online (Sandbox Code Playgroud) 假设我想在字符串中找到一个模式,如果该模式存在,那么我只保留该模式之前的字符串部分。我的问题是,如果模式不存在,那么它会返回NA,最终结果将是NA. 我希望它在模式不存在时返回原始字符串。
library(stringr)
library(dplyr)
unique(iris$Species)
#> [1] setosa versicolor virginica
#> Levels: setosa versicolor virginica
test <- iris %>%
mutate(Species = str_sub(Species, 1, str_locate(Species, "t")[,1] ))
head(test)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 0.2 set
#> 2 4.9 3.0 1.4 0.2 set
#> 3 4.7 3.2 1.3 0.2 set
#> 4 4.6 3.1 1.5 0.2 set
#> 5 5.0 3.6 1.4 0.2 set
#> 6 5.4 3.9 1.7 0.4 set
tail(test) …Run Code Online (Sandbox Code Playgroud) 因此,此示例基本上来自https://tidyeval.tidyverse.org/dplyr.html#patterns-for-single-arguments,它可以正常工作:
library(tidyverse)
group_mean <- function(df, group_var, summary_var){
group_var <- rlang::enquo(group_var)
summary_var <-rlang::enquo(summary_var)
name <- paste0(rlang::quo_name(summary_var), "_mean")
df %>%
dplyr::group_by(!!group_var) %>%
dplyr::summarise(!!name := mean(!!summary_var, na.rm = TRUE))
}
mtcars %>% group_mean(group_var = cyl, summary_var = disp)
#> # A tibble: 3 x 2
#> cyl disp_mean
#> <dbl> <dbl>
#> 1 4 105.
#> 2 6 183.
#> 3 8 353.
Run Code Online (Sandbox Code Playgroud)
我想例如能够有时选择中位数而不是均值,例如将函数名称更改为group_stat()。
我有一个数据框,我创建了一系列虚拟变量,然后将它们组合成i final列.我想知道我是否有一个连续3个1的情况,即有没有办法在下面的例子中给出行3:5的数据帧的子集?
df <- tibble(
a= c(0, 0, 1, 1, 1, 0, 1, 1)
)
df
# A tibble: 8 x 1
a
<dbl>
1 0
2 0
3 1
4 1
5 1
6 0
7 1
8 1
Run Code Online (Sandbox Code Playgroud) 我有以下颜色:
c("#bbb487", "#066e9f", "#e2dfcc", "#4e766d", "#dd8047", "#d8b25c")
Run Code Online (Sandbox Code Playgroud)
我想作一个简单的图,以便可以看到带有ggplot2R或R 的颜色。
我有以下从计数中获得的数据框。我曾经dput使数据框可用,然后编辑数据框,因此存在A.
df <- structure(list(Procedure = structure(c(4L, 1L, 2L, 3L), .Label = c("A", "A", "C", "D", "-1"),
class = "factor"), n = c(10717L, 4412L, 2058L, 1480L)),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -4L), .Names = c("Procedure", "n"))
print(df)
# A tibble: 4 x 2
Procedure n
<fct> <int>
1 D 10717
2 A 4412
3 A 2058
4 C 1480
Run Code Online (Sandbox Code Playgroud)
现在我想对过程进行区分,只保留第一个A。
df %>%
distinct(Procedure, .keep_all=TRUE)
# A tibble: 4 x 2
Procedure n …Run Code Online (Sandbox Code Playgroud) 我想以粗体显示我的表格标题,但似乎找不到它的选项。
我的代码是(在 rmarkdown 文档中):
kable(head(iris), caption = 'I want this in Bold') %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Run Code Online (Sandbox Code Playgroud)
输出是:
我有一个insert into tableA select from someTables,在我的select我有两个文本列,我将它们连接起来,例如colA + colB. 他们有类型varchar(n)。列应该TableA简单地是varchar(2n)?如果说我有,这对性能不利varchar(5*n)吗?
如果将两列连接varchar(n)起来,结果是否可能大于varchar(2n)或例如nvarchar(3n)?
r ×10
dplyr ×6
sql-server ×4
ggplot2 ×3
t-sql ×3
tibble ×2
data.table ×1
dbplyr ×1
dtplyr ×1
kable ×1
kableextra ×1
purrr ×1
r-markdown ×1
rlang ×1
rollback ×1
sql ×1
ssms ×1
stringr ×1
subset ×1
tidyeval ×1
tidyverse ×1
transactions ×1