使用 mutate 和 for 循环(按变量名前缀)对多组变量进行 R rowSums

2023-12-07

我有多个变量按前缀(par___、fri___、gp___ 等)分组在一起,其中有 29 个组。

每个变量的值为 0 或 1。我需要做的是对这些组(即,partner___1 + Partner___2 等)求和,如果 rowSums = 0,则使每个变量为 NA。

例如。我的数据如下所示:

par___ par___2 fri___1 fri___2
0 0 1 1
0 1 0 0
0 0 1 0
0 0 0 0

我希望它看起来像这样:

par___ par___2 fri___1 fri___2
NA NA 1 1
0 1 NA NA
NA NA 1 0
NA NA NA NA

我可以像这样单独完成:

  df<- df%>%
    mutate(rowsum = rowSums(.[grep("par___", names(.))])) %>% 
    mutate_at(grep("par___", names(.)), funs(ifelse(rowsum == 0, NA, .))) %>%
    select(-rowsum) 

我想我可以做这样的事情:

vars <- c('par___', "fri___','gp___')


for (i in vars) {
  df<- df%>%
    # creates a "rowsum" column storing the sum of columns 1:2 
    mutate(rowsum = rowSums(.[grep(i, names(.))])) %>% 
    # applies, to columns 1:2, a function that puts NA when the sum of the rows is 0
    mutate_at(grep(i, names(.)), funs(ifelse(rowsum == 0, NA, .))) %>%
    select(-rowsum) 
    }

没有错误消息,但它不起作用。

另外,我尝试使用 mutate(across()) 而不是 mutate_at() 并收到此错误:

错误:有问题mutate() input ..1。 x 无法将列表转换为函数 我输入..1 is across(grep(i, names(.)), list(ifelse(rowsum == 0, NA, .))).

而且,我尝试使用 list 而不是 funs 并收到此错误:

rowsum == 0 中的错误: 比较 (1) 仅适用于原子类型和列表类型

任何帮助将不胜感激!

谢谢大家。


tidyverse 选项是:

df %>%
  stack() %>%
  group_by(ind) %>%
  group_by(grp = row_number(), grp2 = str_remove(ind, "_.*")) %>%
  mutate(values = values + na_if(all(values==0), 1)) %>%
  pivot_wider(grp, ind, values_from = values)
  
# A tibble: 4 x 5
# Groups:   grp [4]
    grp par___1 par___2 fri___1 fri___2
  <int>   <int>   <int>   <int>   <int>
1     1      NA      NA       1       1
2     2       0       1      NA      NA
3     3      NA      NA       1       0
4     4      NA      NA      NA      NA

另一方面,如果您更喜欢基本 R,那么您可以这样做:

d <- ave(unlist(df), row(df), sub("_.*", "", names(df))[col(df)], FUN = function(x) x * NA ^ all(x==0))
array(d, dim(df), dimnames(df))

  par___1 par___2 fri___1 fri___2
1      NA      NA       1       1
2       0       1      NA      NA
3      NA      NA       1       0
4      NA      NA      NA      NA

请注意,最后一个是矩阵,您可以将其转换为数据框。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mutate 和 for 循环(按变量名前缀)对多组变量进行 R rowSums 的相关文章

  • 在单个显示器中绘制多个 jpeg 图像

    我需要在单个组合显示器 或画布 中绘制和显示多个 jpeg 图像 例如 假设我有图像 a b c d jpg 每个图像的大小不同 我想将它们绘制在 2x2 网格的一页上 能够为每个子图设置标题也很好 我一直在彻底寻找解决方案 但不知道如何去
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • 当测试集中不存在响应变量时,h2o 预测有时会失败

    当在不存在响应变量的测试集上进行预测时 如果在训练中对因子变量使用一种热编码 则 h2o 会以各种不同的方式失败 无论是在训练 GLM 时隐式指定还是在其他方法中显式指定时 R 3 4 0 和 h2o 3 12 0 1 中存在此错误 我们还
  • 使用 R 从字符串中提取函数参数

    最好使用stringr包 我想创建一个函数extract 以字符串向量作为参数 vec lt c div span icon hospital user i18n t Enrolments or i18n t Paper a string
  • 使用 stargazer 分析包含时间序列的数据帧

    我有一个面板数据集共 10 个观测值和 3 个变量 观测值 30 的数量 10 行 国家 地区 2 列 迁移参数 相应年份的 1 列 可以这么说 我的数据框由 3 个年度数据框组成 我该如何申请观星者考虑到它是一个面板数据集 所以最大 N
  • 编写健壮的 R 代码:命名空间、屏蔽和使用 `::` 运算符

    简洁版本 对于那些不想阅读我的 案例 的人来说 这就是本质 最小化新包破坏现有代码 即编写您编写的代码 的机会的推荐方法是什么尽可能坚固 充分利用该功能的推荐方法是什么 命名空间机制 when a just using贡献的软件包 比如在一
  • R lubridate:当地语言的工作日

    如何获取本地语言的工作日和月份 My code library lubridate data lt c 10 02 2015 11 03 2015 data lubri lt dmy data wday data lubri label T
  • 无法在 Document-Term-Matrix 中看到 `RTextTools::toLower()` 文本的结果

    我尝试创建一个矩阵 为此我想降低文本 为此 我使用此 R 指令 matrix create matrix tweets 1 toLower TRUE language english removeStopwords FALSE remove
  • ggplot2 - 添加具有不同中断和标签的辅助 y 轴

    是否可以使用 ggplot2 手动向辅助 y 轴添加中断和标签 see bottom right 我希望在右侧 y 轴上有更紧凑的中断 代表条形 该图将作为基本情况 然后我将展示如何更改辅助 y 轴上的分隔符和标签 sapply c pip
  • 使用starts_with() 将 NA 替换为 0

    我正在尝试替换我的一组特定列的 NA 值tibble 这些列都以相同的前缀开头 所以我想知道是否有一种简洁的方法来使用starts with 函数从dplyr包可以让我做到这一点 我已经看到了有关 SO 的其他几个问题 但是它们都需要使用特
  • 在 R 中将时间间隔数据扩展为天数

    假设我有如下所示的数据 interval id indiv id role start date end date 1 1 A 2006 05 01 2006 06 16 2 1 B 2006 06 16 2006 10 16 3 1 A
  • 如何将 R 数据框中的多个字符列合并为单个列

    我正在处理人口普查数据 需要将四个字符列合并为一列 Example LOGRECNO STATE COUNTY TRACT BLOCK 60 01 001 021100 1053 61 01 001 021100 1054 62 01 00
  • R:根据元素长度从向量中删除元素

    如何根据字符串的字符数或长度从字符串向量中删除元素 df lt c asdf fweafewwf af aewfawefwef awefWEfawefawef gt df 1 asdf fweafewwf af aewfawefwef aw
  • 回归时如何设置系数值;右

    我正在寻找一种指定预测变量值的方法 当我使用当前数据运行 glm 时 其中一个变量的系数接近 1 我想将其设置为 0 8 我知道这会给我一个较低的 R 2 值 但我先验地知道模型的预测能力会更大 glm 的权重组件看起来很有希望 但我还没有
  • 访问 R 工作区中的数据[重复]

    这个问题在这里已经有答案了 我是自学 R 的 可能有一些非常基本的东西我可能不熟悉 如果是这样我道歉 我正在尝试访问外部来源提供给我的数据 它作为一个工作空间出现 我的流程如下 gt ls 1 2003OHT HR gt attach 20
  • 使用 readHTMLTable 从 https 网页读取表格

    我安装了 R 3 3 1 并使用 RStudio 0 99 903 我正在尝试从以下 URL 将表格读入 R https www fantasypros com nfl rankings consensus cheatsheets php
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • 如何使用 R 中的函数 sqlSave() 将数据附加到具有 IDENTITY 主键的 SQL Server 表?

    我在SQL Server中创建了一个表 如下所示 CREATE TABLE testPK ID INT NOT NULL IDENTITY 1 1 PRIMARY KEY NumVal NUMERIC 18 4 现在我想使用 RODBC 函

随机推荐

  • 如何使用Pyarrow实现流式写入效果

    我拥有的数据是一种流数据 我想将它们存储到一个 Parquet 文件中 但是 Pyarrow 每次都会覆盖 Parquet 文件 那么我该怎么办呢 我尝试不关闭编写器 但这似乎是不可能的 因为如果我不关闭它 那么我将无法读取该文件 这是包
  • 访问文件时出错。网络连接可能已丢失

    因此 我使用 VBA 代码打开 Excel 文件 并将数据下载到包含代码的工作表中 它有效 现在我收到错误 访问文件时出错 网络连接可能已丢失 我打开代码看看它落在哪里 我以为文件可能已更改位置或名称已更改 当我浏览代码 使用 F8 时 我
  • 如何序列化java中实现的链表?

    我在网上读到 通过将派生对象声明为瞬态 可以省略派生对象的序列化 但是 在链表的情况下 链接是对象之间的内存引用 那么 我应该将其转换为数组并存储数组表示形式吗 Java 序列化的方式如下LinkedList 它获取所有元素并将它们写入Ob
  • 列表 - 如何查找某个项目出现的次数[重复]

    这个问题在这里已经有答案了 可能的重复 如何计算Python中列表项的出现次数 我正在进行一项民意调查 为此 我正在使用 Python 而我所坚持的部分是试图弄清楚如何计算特定事物 例如 杂货店 出现的次数 例如 民意调查 您最常在哪里看到
  • geohash 和最大距离

    前 6 个字符匹配的两个 geohash 两个 geohash 之间的距离最大为 0 61km 前 5 个字符匹配的两个 geohash 两个 geohash 之间的距离最大为 2 5km 问 5 位长度的给定 geohash 的任何一对边
  • CodeIgniter:解析位于 javascript 中的动态语言标题

    我有一个需要本地化的 JavaScript 代码 即 function js proc var some data this text needs to be translated dynamically at runtime 所以我这样重
  • 设置“可见性”后未获取“RelativeLayout get Height()”

    我想要的是 当我单击仪表板按钮时 它将像滑动抽屉一样打开 打开后再次单击它 它将关闭 我使用这个自定义抽屉是因为 SlidingDrawer 已弃用 现在的问题是 它工作正常 除了第一次单击按钮时 它会打开得非常快 没有任何动画 但会正常关
  • 有没有办法在Python Selenium中通过属性查找元素?

    我得到了这样的 html 片段
  • 使用 WMI 和 C# 的 CPU 使用率

    如何使用 WMI 在 C 中检索当前 CPU 使用情况 我看过很多使用性能计数器的帖子 但我需要一个可以与远程计算机一起使用的解决方案 我还找到了一个VB解决方案here 但如果可能的话 我更愿意在 C 中完成此任务 至少可以说 WMI 的
  • Rust 不接收来自 C++ 的 UDP 消息

    我正在使用 UDP 创建服务器 客户端范例 但 Rust 服务器未接收 C 客户端消息 我已经能够成功地进行 Rust 服务器 Rust 客户端和 C 服务器 Rust 客户端通信 这让我相信我的 C 代码存在问题 或者在将 C 缓冲区发送
  • 为什么 x86-64 汇编中参数存储在寄存器中而不是堆栈中?

    在 x86 32 汇编中 参数存储在堆栈中 但在 x86 64 中 参数存储在寄存器中 这是什么原因呢 访问 CPU 寄存器比访问 RAM 快得多 由于 64 位 CPU 有更多通用寄存器 与 64 位无关 只是因为它们更新 更大 因此使用
  • 如何使用有效的 CSS 来定位 IE7 和 IE8?

    我想使用符合 W3C 的 CSS 来定位 IE7 和 IE8 有时修复一个版本的 CSS 并不能修复另一个版本的 CSS 我怎样才能实现这个目标 使用 HTML 和 CSS 明确定位 IE 版本 无需破解 如果您不想对 CSS 进行修改 请
  • 构建Word字段

    除了将文本插入和解析到空白 Word 字段之外 是否有任何方法可以使用 VBA 以编程方式将用户定义的字段和字段代码构建到我自己的模板中 此外 有没有办法让这些字段显示在可用字段列表中 我最近开发了一个使用 Word 的 MACROBUTT
  • 使用后台线程从 url 加载注释。移动或缩放地图视图之前不会显示图钉

    我使用后台线程从 url 加载注释 在移动或缩放地图视图之前 图钉不会显示 我如何更新我的视图 我的观点确实出现了 void viewDidAppear BOOL animated super viewDidAppear animated
  • static const int 和 static int const 有什么区别?

    In this answer使用的OP static int const var 5 在条件编译控制的上下文中 使用之间有区别吗static const int and static int const 例如 static const in
  • 检测 pygtk 中的 ctrl+click 按钮

    我想检测当用户单击按钮时是否按住 ctrl 点击 信号似乎没有向回调传递足够的信息来解决这个问题 如果您可以连接到button press event or button release event代替clicked the event传递
  • Android 对位图的噪点效果

    我正在编写一些函数来在位图上添加噪点效果 我发现类似的问题 向绘图添加噪点效果 位图输出Bitmap Bitmap createBitmap bitmap getWidth bitmap getHeight Bitmap Config AR
  • 反转字符串时间和空间复杂度

    我编写了不同的 python 代码来反转给定的字符串 但是 无法确定其中哪一个是有效的 有人可以指出这些算法在时间和空间复杂度上的差异吗 def reverse 1 s result for i in s result i result r
  • Rails 视图下拉列表中的日期格式

    我可以帮助您格式化视图中下拉列表中的日期字段 我的日期显示带有时间戳 我希望它们显示为 mm dd yyyy 在我的模型中 我有一个从表中选择日期字段的方法 def self get event dates event dates Ugra
  • 使用 mutate 和 for 循环(按变量名前缀)对多组变量进行 R rowSums

    我有多个变量按前缀 par fri gp 等 分组在一起 其中有 29 个组 每个变量的值为 0 或 1 我需要做的是对这些组 即 partner 1 Partner 2 等 求和 如果 rowSums 0 则使每个变量为 NA 例如 我的