当前位置: 首页 > 知识库问答 >
问题:

R中列上变异函数循环

常经赋
2023-03-14

我正在尝试从几个mutate(dplyr包)函数创建一个循环函数。下面的每一行代码都运行得很好,但是我正在寻找更优雅的代码(如果可能的话,在一行代码中),因为我需要再重复这五行代码10次(对于额外的10个数据帧)。

ism.50是我的Data.Frame,有5列10,000行。

Isim_n20<dbl> Isim_n30<dbl> Isim_n50<dbl> Isim_n100<dbl> Isim_n1000<dbl>
1   1.7789999   3.7416683   1.8228680   1.1573671   1.0336168
2   1.3475063   0.7559132   1.2948982   0.9957275   0.9409909
3   0.5980781   1.7888836   1.4068773   1.0847899   0.9354231
4   1.4656961   1.6271786   1.2401491   1.1348101   0.9749408
5   1.8969097   0.6829495   1.4543307   0.8554704   1.0039841
6   1.3969583   1.1180521   0.7765212   0.8293486   1.0257257
7   0.9155140   1.3892062   0.8045851   1.0480486   1.0344771

ism.50 <- ism.50 %>% mutate(Intv_n20=cut(ism.50[,1], breaks=breaks, labels=labels))
ism.50 <- ism.50 %>% mutate(Intv_n30=cut(ism.50[,2], breaks=breaks, labels=labels)) 
ism.50 <- ism.50 %>% mutate(Intv_n50=cut(ism.50[,3], breaks=breaks, labels=labels)) 
ism.50 <- ism.50 %>% mutate(Intv_n100=cut(ism.50[,4], breaks=breaks, labels=labels)) 
ism.50 <- ism.50 %>% mutate(Intv_n1000=cut(ism.50[,5], breaks=breaks, labels=labels))
for (j in 1:col(ism.50)) {
  ism.50 %>% mutate(Intv_[j]=cut(ism.50[j], breaks=breaks, labels=labels))
}

共有1个答案

颜昕
2023-03-14

试一试,函数是新的,但它有助于重命名。如果你需要我调整就告诉我。它的好处是它是可伸缩的。所以如果你有100列就可以了。

 library(tidyverse)
    mutate(ism.50,
          across(starts_with("Isim"), 
          ~cut(., 
               breaks = breaks,
               labels = labels), 
          .names = "replace{col}")) %>% 
          rename_at(vars(starts_with("replace")), ~str_replace(., "replaceIsim", "Intv"))
 类似资料:
  • 我是最近一个R的转换者,正在努力寻找下面的R等价物:循环使用一个公共前缀加上一个数字(var1,var2,...,varn)命名的变量。 假设我有一个数据集,其中每行是一个商店,每列是该商店在第1个月、第2个月...第6个月的收入值。一些虚构的数据,例如: 你能提出一个适当的方法吗?

  • 我有这个数据 如果M3大于UCL,MM3将为“UP”,否则为“NULL” 但是我有几个M列(比如m1~m1005),所以我想做一些代码,比如mutate_each和mutate_at。如何使用mutate和ifelse函数在特定条件下创建新列?

  • 我在尝试创建一个函数时遇到了麻烦。我想把数字转换成一周中指定的日子。例如:1='星期一',2='星期二',3='星期三',4='星期四',5='星期五',6='星期六',0='星期日' 下面是我编写函数的尝试,但我得到了一个错误,我还认为一定有一种方法可以循环它。我只是不知道怎么做。

  • 循环变量内建函数从 FreeMarker 2.3.23 版本开始存在。 这些内建函数只能用于list 和 items 指令 的循环变量 (也可以用于已经废弃的 foreach 指令)。 下面是一些说明(loopVar?index 在可以列表的值中进行迭代,返回从0开始的索引): <#-- Note: x is a loop variable --> <#list ['a', 'b', 'c'] a

  • 问题内容: 我如何访问传递给fs.lstat函数的变量? 问题答案: 这是使用而不是for循环迭代值的完美理由。 另外,您可以使用@Aadit建议的闭包:

  • 大家早上好,这是我第一次在stack overflow上发帖。感谢任何帮助! 我有2个用于分析股票数据的数据框。一个数据框包含日期和其他信息,我们可以将其称为df: 第二个数据框也有日期和其他重要信息。 这是我想做的:对于df1中的每一行,我需要: -在df2中查找日期,当df2$答案与df1$key相同时,它最接近df1中该行的日期。 -然后提取df2中该行的另一列的信息,并将其放入df1中的新