我有以下几点:
library(tidyverse)
df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5), Sepal.Width = c(3.5,
3, 3.2, 3.1, 3.6), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4)), .Names = c("Sepal.Length",
"Sepal.Width", "Petal.Length"), row.names = c(NA, 5L), class = c("tbl_df",
"tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
这看起来像这样:
> df
# A tibble: 5 × 3
Sepal.Length Sepal.Width Petal.Length
* <dbl> <dbl> <dbl>
1 5.1 3.5 1.4
2 4.9 3.0 1.4
3 4.7 3.2 1.3
4 4.6 3.1 1.5
5 5.0 3.6 1.4
Run Code Online (Sandbox Code Playgroud)
我想要做的是替换Sepal.Length和Petal.Length附加的字符串 …
我在使用dplyr重命名函数中的列时遇到困难.我已经找到了关于非标准评估和enquo的使用的有用帖子(例如,http://dplyr.tidyverse.org/articles/programming.html 和 在自定义dplyr函数中更改结果变量的名称).最终目标是使用该函数汇总每个组,然后将列重命名为比原始变量名更有意义的列.
这是一个简单的例子,除了注释掉的行外,它都有效.
library(tidyverse)
myfunc <- function(df, groupvar, colvar, grouplab, collab) {
groupvar <- enquo(groupvar)
colvar <- enquo(colvar)
grouplab <- enquo(grouplab) # quo_name instead?
collab <- enquo(collab) # quo_name instead?
t <- df %>%
select(!!groupvar, !!colvar) %>%
group_by(!!groupvar, !!colvar) %>%
summarise(
Frequencies = length(!!colvar),
Percentages = length(!!colvar) / nrow(df)
) %>%
mutate(
Frequencies = scales::comma(Frequencies),
Percentages = scales::percent(Percentages)
) #%>%
# rename(
# (!!grouplab) = !!groupvar, # add a more descriptive grouping var label
# (!!collab) …Run Code Online (Sandbox Code Playgroud)