在循环中使用glue和dplyr获取关卡名称

2024-01-01

我试图在循环中使用 dplyr 和胶水从表中获取级别名称(我使用循环是因为我获得大量变量来获取分组表和单个表),我在下面显示了一个示例:

library(dplyr)
library(glue)
var=c( "vs", "am")
for(i in var) {
bd=mtcars%>%
group_by(carb) %>%
 count_(i) %>%
      mutate(descripcion = glue("carb number:{carb} in: {i} with freq: {n},"))
print(bd) 
print(bd$descripcion)
}

我的结果:

组: 碳水化合物 [6]

   carb    vs     n descripcion                       
  <dbl> <dbl> <int> <chr>                             
1     1     1     7 carb number:1 in: vs with freq: 7,
2     2     0     5 carb number:2 in: vs with freq: 5,
3     2     1     5 carb number:2 in: vs with freq: 5,
4     3     0     3 carb number:3 in: vs with freq: 3,
5     4     0     8 carb number:4 in: vs with freq: 8,
6     4     1     2 carb number:4 in: vs with freq: 2,
7     6     0     1 carb number:6 in: vs with freq: 1,
8     8     0     1 carb number:8 in: vs with freq: 1,
[1] "carb number:1 in: vs with freq: 7," "carb number:2 in: vs with freq: 5,"
[3] "carb number:2 in: vs with freq: 5," "carb number:3 in: vs with freq: 3,"
[5] "carb number:4 in: vs with freq: 8," "carb number:4 in: vs with freq: 2,"
[7] "carb number:6 in: vs with freq: 1," "carb number:8 in: vs with freq: 1,"
# A tibble: 9 x 4
# Groups:   carb [6]
   carb    am     n descripcion                       
  <dbl> <dbl> <int> <chr>                             
1     1     0     3 carb number:1 in: am with freq: 3,
2     1     1     4 carb number:1 in: am with freq: 4,
3     2     0     6 carb number:2 in: am with freq: 6,
4     2     1     4 carb number:2 in: am with freq: 4,
5     3     0     3 carb number:3 in: am with freq: 3,
6     4     0     7 carb number:4 in: am with freq: 7,
7     4     1     3 carb number:4 in: am with freq: 3,
8     6     1     1 carb number:6 in: am with freq: 1,
9     8     1     1 carb number:8 in: am with freq: 1,
[1] "carb number:1 in: am with freq: 3," "carb number:1 in: am with freq: 4,"
[3] "carb number:2 in: am with freq: 6," "carb number:2 in: am with freq: 4,"
[5] "carb number:3 in: am with freq: 3," "carb number:4 in: am with freq: 7,"
[7] "carb number:4 in: am with freq: 3," "carb number:6 in: am with freq: 1,"
[9] "carb number:8 in: am with freq: 1,"

我的问题是我无法从本例中的 vs 和 am 变量中获取级别名称。 我的目标是让各个表按碳水化合物分组:

[1] "carb number:1 in:  vs 1 with freq: 7," "carb number:2 in:  vs 0 with freq: 5,"
   [3] "carb number:2 in:  vs 1 with freq: 5," "carb number:3 in:  vs 0 with freq: 3,"
   [5] "carb number:4 in:  vs 0 with freq: 8," "carb number:4 in:  vs 1 with freq: 2,"
   [7] "carb number:6 in:  vs 0 with freq: 1," "carb number:8 in:  vs 0 with freq: 1,"

我们可以使用paste0因为它是矢量化的。

library(dplyr)

mtcars%>% 
   count(carb, vs) %>%
   mutate(description = paste0("carb number: ",carb, " in: vs ", vs, 
                                " with freq: ", n))


#   carb    vs     n description                         
#  <dbl> <dbl> <int> <chr>                               
#1     1     1     7 carb number: 1 in: vs 1 with freq: 7
#2     2     0     5 carb number: 2 in: vs 0 with freq: 5
#3     2     1     5 carb number: 2 in: vs 1 with freq: 5
#4     3     0     3 carb number: 3 in: vs 0 with freq: 3
#5     4     0     8 carb number: 4 in: vs 0 with freq: 8
#6     4     1     2 carb number: 4 in: vs 1 with freq: 2
#7     6     0     1 carb number: 6 in: vs 0 with freq: 1
#8     8     0     1 carb number: 8 in: vs 0 with freq: 1

To use glue我们需要使用某个版本map from purrr

library(dplyr)
library(glue)
library(purrr)

mtcars%>% 
   count(carb, vs) %>%
   mutate(description = pmap_chr(list(carb, vs, n), function(a, b, c) 
             glue("carb number: ",{a}, " in: vs ", {b}, " with freq: ", {c})))

EDIT

如果我们有不同的列要计数,我们可以将变量转换为符号

var = c("vs", "am")
library(rlang)

map(var, function(x) mtcars%>% 
                       count(carb, !!sym(x)) %>%
                       mutate(description = paste0("carb number: ",carb, " in: ", 
                        x, " " , !!sym(x)," with freq: ", n)))

#[[1]]
# A tibble: 8 x 4
#   carb    vs     n description                         
#  <dbl> <dbl> <int> <chr>                               
#1     1     1     7 carb number: 1 in: vs 1 with freq: 7
#2     2     0     5 carb number: 2 in: vs 0 with freq: 5
#3     2     1     5 carb number: 2 in: vs 1 with freq: 5
#4     3     0     3 carb number: 3 in: vs 0 with freq: 3
#5     4     0     8 carb number: 4 in: vs 0 with freq: 8
#6     4     1     2 carb number: 4 in: vs 1 with freq: 2
#7     6     0     1 carb number: 6 in: vs 0 with freq: 1
#8     8     0     1 carb number: 8 in: vs 0 with freq: 1

#[[2]]
# A tibble: 9 x 4
#   carb    am     n description                         
#  <dbl> <dbl> <int> <chr>                               
#1     1     0     3 carb number: 1 in: am 0 with freq: 3
#2     1     1     4 carb number: 1 in: am 1 with freq: 4
#3     2     0     6 carb number: 2 in: am 0 with freq: 6
#4     2     1     4 carb number: 2 in: am 1 with freq: 4
#5     3     0     3 carb number: 3 in: am 0 with freq: 3
#6     4     0     7 carb number: 4 in: am 0 with freq: 7
#7     4     1     3 carb number: 4 in: am 1 with freq: 3
#8     6     1     1 carb number: 6 in: am 1 with freq: 1
#9     8     1     1 carb number: 8 in: am 1 with freq: 1

Or with for loop

for (i in var) {
   print(mtcars%>% 
           count(carb, !!sym(i)) %>%
           mutate(description = paste0("carb number: ",carb, " in: ", i, " " , 
                                  !!sym(i), " with freq: ", n)))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环中使用glue和dplyr获取关卡名称 的相关文章

  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 如何从 R keras 中的类似生成器的数据中评估()和预测()

    我有以下代码 数据集可以下载here https www dropbox com s qjt5o31oyqj10m8 data tar gz dl 0 or here https www kaggle com c dogs vs cats
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 所有 x 轴标签未以 45 度显示

    I m having the code as like below But I m not getting all the x axis labels and it is not displaying in 45 degree when I
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • 投资决策:R中的NPV、IRR、PB计算

    我正在尝试计算不同数量项目的净现值 NPV 内部收益率 IRR 和投资回收期 PB 时间 以评估哪个投资项目提供最佳回报 到目前为止 我可以为每个项目单独计算几行代码 但我想做的是 编写一个函数 它接受一个包含许多不同项目及其现金流的矩阵
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 条件字体颜色 R Markdown

    我无法找到一种方法来根据变量的值 gt 0 0 或 r setup include FALSE x lt 4 This is an R Markdown document r if x gt 0 textcolor red Markdown
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐