相关疑难解决方法(0)

dplyr - mutate:使用动态变量名

我想使用dplyr dplyr::mutate()在数据框中创建多个新列.应动态生成列名称及其内容.

来自虹膜的示例数据:

library(dplyr)
iris <- tbl_df(iris)
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个函数来改变Petal.Width变量中的新列:

multipetal <- function(df, n) {
    varname <- paste("petal", n , sep=".")
    df <- mutate(df, varname = Petal.Width * n)  ## problem arises here
    df
}
Run Code Online (Sandbox Code Playgroud)

现在我创建一个循环来构建我的列:

for(i in 2:5) {
    iris <- multipetal(df=iris, n=i)
}
Run Code Online (Sandbox Code Playgroud)

但是,由于mutate认为varname是一个文字变量名,因此循环只创建一个新变量(称为varname)而不是四个(称为petal.2 - petal.5).

如何将mutate()动态名称用作变量名?

r r-faq dplyr

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

dplyr 使用可变列进行变异

我正在尝试使用mutate基于特定列的值创建一个新列。

示例最终数据框(我正在尝试创建new_col):

x = tibble(colA = c(11, 12, 13),
           colB = c(91, 92, 93),
           col_to_use = c("colA", "colA", "colB"),
           new_col = c(11, 12, 93))
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情:

x %>% mutate(new_col = col_to_use)
Run Code Online (Sandbox Code Playgroud)

除了列内容之外,我想将它们转换为变量。我开始于:

col_name = "colA"
x %>% mutate(new_col = !!as.name(col_name))
Run Code Online (Sandbox Code Playgroud)

这适用于静态变量。但是,我一直无法更改变量来表示列。如何根据不同列的内容获取列名?

这个问题基本上与此相反:dplyr - mutate: use dynamic variable names。我无法根据我的问题调整解决方案。

r dplyr nse tidyverse quosure

8
推荐指数
2
解决办法
1006
查看次数

R dplyr:使用变量名调用 `count()` (现在 `count_()` 已被弃用)

我正在尝试将dplyr\count()与动态变量名称而不是列名称一起使用。以前,我会使用count_(),但现在已弃用。最好的替代品是什么?

\n\n

最小可重现示例:

\n\n
library(dplyr)\ndf <- data.frame(id = 1:10, city = sample(c("London","Paris","Amsterdam"), 10, replace=TRUE))\ncolname <- "city"\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我尝试过的:

\n\n
df %>% count( city )  # desired output (works but isn\'t dynamic)\ndf %>% count( !!colname )  # doesn\'t work, makes it literally "city"\ndf %>% count( vars(colname) )  # doesn\'t work\ndf %>% count( eval(colname) )  #\xc2\xa0doesn\'t work either\ndf %>% count( eval(parse(text=colname)) )  # works, but is not \'dplyr\' ?\ndf %>% count( eval(sym(colname)) )  # works, but …
Run Code Online (Sandbox Code Playgroud)

r dplyr

8
推荐指数
2
解决办法
1533
查看次数

标签 统计

dplyr ×3

r ×3

nse ×1

quosure ×1

r-faq ×1

tidyverse ×1