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

R:dplyr条件汇总并重新编码列中的值

舒宏富
2023-03-14

我想根据列的汇总统计信息(例如,列的中值)在选定的列中重新编码以下值。例如,如果单元格值 median(df$variable)=2。以下由Core.vars定义的变量在dataset中,并且仍然保留数据帧中的其余变量。

temp.df <- as.tibble (mtcars)
other.vars <- c('hp', 'drat', 'wt')
core.vars <- c('mpg', 'cyl', 'disp')
temp.df <- rownames_to_column (temp.df, var ="cars_id")
temp.df <- temp.df %>% mutate_if (is.integer, as.numeric)
`temp.df <- temp.df %>% mutate_at(.vars %in% (core.vars)), funs ({
lookupvariable <- temp.df %>% pull (quo_name(quo(.))) #extract column name
ifelse(is.na(.), lookup_value, .)}),
function (x) case_when (
x < median(lookupvariable) ~ 1,
x == median(lookupvariable) ~ 0,
x > median(lookupvariable) ~ 2
))`

尝试2:

`temp.df <- temp.df %>% mutate_at(.vars %in% (core.vars)), function (x) case_when (
x < summarise_each (list (median)) ~ 1,
x == summarise_each (list (median)) ~ 0,
x > summarise_each (list (median)) ~ 2
))`

这不起作用,因为传递给summarise的数据不是向量

论坛上以前的问题包括如何为单个变量做这件事,然而我有100个变量和300个样本,所以逐行输入它们不是一个选项。我看过下面的解决方案,但它们都略有不同。

R:使用recode、mutate和case_when重新编码变量

理想情况下,最好不要创建单独的数据帧,然后进行join,或者像mutate那样创建多个单独的变量。我确信有一个for循环和/或ifelse方法来实现这个目标,但是我试图使用tidyverse来实现这个目标。任何建议都会有帮助。提前道谢。

共有1个答案

颛孙铭
2023-03-14

通过mutate_at,它正在创建/修改列

library(dplyr)
temp.df %>% 
   mutate_at(vars(core.vars), ~ {
             md <- median(.)
         case_when(. < md ~ 1, . == md ~ 0, . > md ~ 2)})

也可以在不使用casewhen的情况下更改这些值

temp.df %>% 
       mutate_at(vars(core.vars), ~ sign(. - median(.)))
 类似资料:
  • 本文向大家介绍python中的编码知识整理汇总,包括了python中的编码知识整理汇总的使用技巧和注意事项,需要的朋友参考一下 问题 在平时工作中,遇到了这样的错误: 想必大家也都碰到过,很常见 。于是决定对python的编码做一个整理和学习。 基础知识 在python2.x中,有两种数据类型,unicode和str,这两个都是basestring的子类 两者的区别,概括来讲,str是字节串,由u

  • 是否可以重写以下内容,使其不包含任何条件语句?我想使用按位运算之类的东西可能会有一些聪明的技巧? 编辑:澄清一下,我不是在寻找一种去除条件句的通用方法。我正在寻找一个技巧,从这个非常具体的代码中删除条件。把它当成一个学术难题。 举个例子,删除条件(在某些情况下会产生性能增益)的一种方法是预先计算一个查找表,然后用< code>b索引。在这种特殊情况下,这很棘手,因为< code>b可能是一个非常大

  • 问题内容: 这是我的代码,我需要对列表中未定义数量的元素求和。这该怎么做? 我的输入: 输入后,我通过删除第一个元素。在列表之后,我需要对列表中的所有元素求和。 在这种情况下,总和为18。请注意,未定义元素数。 问题答案: 您可以使用内置的sum()来对列表中的数字求和: 它将汇总所有数量的项目。例: 对于您的具体情况 : 对于您的数据,首先将数字转换为数字,然后将数字求和: 这将适用于列表中 未

  • 问题内容: 我有一个定义为的熊猫数据框: 我想做一个SUM_C的累加和,并将其作为新列添加到同一数据帧。换句话说,我的最终目标是拥有一个如下所示的数据框: 在group()上的熊猫中使用cumsum显示了生成新数据帧的可能性,其中列名SUM_C被替换为累积和。但是,我的要求是将累加总和作为新列添加到现有数据框中。 谢谢 问题答案: 刚申请的 ,并将其分配给一个新的列: 结果:

  • 9.5 条件汇编伪指令 条件汇编伪指令是告诉汇编程序:根据某种条件确定一组程序段是否加入到目标程序中。使用条件汇编伪指令的主要目的是:同一个源程序能根据不同的汇编条件生成不同功能的目标程序,增强宏定义的使用范围。 条件汇编伪指令与高级语言(如:C/C++)的条件编译语句在书写形式上相似,在所起作用方面是完全一致的。 9.5.1 条件汇编伪指令的功能 条件汇编伪指令的一般格式如下: IFnnnn 条

  • 本文向大家介绍PHP和Mysql中转UTF8编码问题汇总,包括了PHP和Mysql中转UTF8编码问题汇总的使用技巧和注意事项,需要的朋友参考一下 一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有很多的编码问题出现! PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/