【问题标题】:how to get column names in mutate function如何在变异函数中获取列名
【发布时间】:2020-11-23 09:54:04
【问题描述】:

大家!我有一个问题。在 iris 数据集中,对于每一行,我想获取值>1的列名,然后将它们组合起来。预期的结果是这样的: SL&SW&PL, SL&SW&PL&PW...

library(tidyverse)
data("iris")
colnames(iris)[1:4] <- c("SL","SW","PL","PW") # simplify the colnames
for (i in 1:nrow(iris)) {
  row_i <- iris[i,1:4]
  iris$new_var[i] <- names(row_i)[row_i>2] %>% paste0(.,collapse = "&")
  }

这里有一些 new_var 的示例,这是我所期望的结果

> iris$new_var[c(1,30,60,90,120)]
[1] "SL&SW"    "SL&SW"    "SL&SW&PL" "SL&SW&PL" "SL&SW&PL"

但是,mutate-function 并没有像我预期的那样工作。

fournames <- c("SL","SW","PL","PW")
iris %>% mutate(new_var=paste0(fournames[(SL:PW)>2],collapse = "&"))

如何使用mutate函数重复for循环结果?

【问题讨论】:

    标签: r for-loop tidyverse dplyr


    【解决方案1】:

    我用代码解决了这个问题:

    iris %>% rowwise %>% mutate(new_var=str_c(names(iris)[1:4][c_across(1:4)>2],collapse = "&")) 
    

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 2021-08-13
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多