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

结合mutate(cross)和case_when来根据条件用0填充多列

羿易安
2023-03-14

在dplyr工作流中,当newvar==0时,我尝试在dataframe的每一列中的newvar列后粘贴一个0,否则不做任何操作。我修改了iris数据集:

library(dplyr)
n <- 150 # sample size

iris1 <- iris %>% 
    mutate(id = row_number(), .before = Sepal.Length) %>% 
    mutate(newvar = sample(c(0,1), replace=TRUE, size=n), .before = Sepal.Length ) %>% 
    mutate(across(.[,3:ncol(.)], ~ case_when(newvar==0 ~ 0)))
    null

共有1个答案

夏飞掣
2023-03-14

.[,3:ncol(.)]是列的值,而不是实际的列号。使用3:ncol(.)应该可以很好地工作。

通常,也最好避免按位置引用列,而是使用它们的名称。您可以在一个mutate调用中完成此操作。

library(dplyr)

n <- 150

iris %>% 
  mutate(id = row_number(), 
        newvar = sample(c(0,1), replace=TRUE, size=n), 
        across(Sepal.Length:Petal.Width, ~ case_when(newvar==0 ~ 0, 
                                                     newvar == 1 ~ .)))
 类似资料:
  • 我想创建一个双变量映射,绘制两个变量:和。为了给部分数据提供正确的颜色,我想为一个变量添加一列颜色代码和另一个变量。然后再将两者连接起来。这样就可以像下面的示例那样对数据进行编码: 下面是我的示例df和失败代码: 有了这些结果...: 我是新的与mutate的结合,希望有人能帮助我。

  • 我有人口统计数据集,其中包括一个家庭中的人的年龄。这是通过一项调查收集的,参与者可以拒绝提供他们的年龄。 结果是一个数据集,每行有一个家庭(每行有一个家庭ID代码),列中有各种家庭特征,如年龄。拒绝的响应编码为“R”,您可以使用下面的代码重新创建示例: 编辑:已解决!

  • 数据文件:-已编辑- 我正在使用ANES 2016时间序列研究数据。使用以下代码和类别对缺失数据进行编码,以表明其缺失的原因: -1.不适用 -2.在单独文件或编码版本中提供的文本响应将包含在未来版本中 3.受限 4.错误 5.中断,足够的部分信息 6.没有选举后采访 7.没有帖子数据,由于信息不完整而删除 8.不知道 9.拒绝 我想在我的数据中使用case_when和Tidyverse对面的NA

  • 问题内容: 希望有人可以帮助我编写SQL脚本或函数。 我有一个数据源,我希望该功能通过并基于2个指定的列填充相关列。 因此,名称和值列。 例如 因此,脚本/函数应该为数据源的每一行分别在a,b,c,d列中填充值2,1、3、5。 这可能吗?如果是这样,有人可以教我如何做。 问题答案: Oracle安装程序 : 更新声明 : 输出 : Oracle安装程序 : 插入语句 : 输出 :

  • 我目前在R中有一个数据框,看起来像这样 我用group_by将数据按动物分组。我想创建一个新的列V6,它采用列V4,将较低的值除以较高的值,如果该值小于0.5,则V6= A,ifelse则V6 = b..有没有办法在R中使用带条件语句的mutate函数?实际的数据框要大得多,所以我宁愿不用手动操作。这是我希望最终数据框的样子 这就是我开始做的 但我知道这是不对的。非常感谢。