相关疑难解决方法(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万
查看次数

在 R 中,dplyr 通过字符串改变引用列名

mydf = data.frame(a = c(1,2,3,4), b = c(5,6,7,8), c = c(3,4,5,6))
var1 = 'a'
var2 = 'b'

mydf = mydf %>% mutate(newCol = var1 + var2)
Run Code Online (Sandbox Code Playgroud)

在我们的代码中,var1var2可以引用 中的不同列mydf,并且我们需要通过对名称保存在和newCol中的列中的值进行求和来创建。我知道这可以在 之外完成,但是我想知道是否有一个像上面那样使用 dplyr 和 %>% 的解决方案。var1var2dplyr

r dplyr

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

标签 统计

dplyr ×2

r ×2

r-faq ×1