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

如何在 dplyr 中引用其他列名称

张心水
2023-03-14

希望是一个简单的问题。我想跨使用dplyr mutate,并引用另一个用于所有mutate函数的静态列。

df <- data.frame(baseline = c(1,2,3), day1 = c(NA,2,2), day2 = c(2,3,4), day3= c(5,4,6))

我想创建一个新的列“fc”,用于基线上每天的变化。我想我可能需要“sym”和!!在基线周围的组合来使其工作,但还没有弄清楚。

df %>% mutate(fc = mutate(across(starts_with('day')), ./baseline))

给出错误

警告消息:在格式.data.frame中(如果(省略)x[seq_len(n0),则丢弃 = FALSE] 否则 x, : 损坏的数据帧: 列将被截断或用 NA 填充

更新:我每天列中都有一些缺失值,因此编辑了上面的代码。当输入中存在 NA 而不是失败时,如何将给定 NA 合并到输出中?

共有1个答案

丁念
2023-03-14

试试这个:

library(dplyr)
#Code
df2 <- df %>% mutate(across(day1:day3,.fns = list(fc = ~ ./baseline)))

输出:

  baseline day1 day2 day3   day1_fc  day2_fc day3_fc
1        1    2    2    5 2.0000000 2.000000       5
2        2    2    3    4 1.0000000 1.500000       2
3        3    2    4    6 0.6666667 1.333333       2

或者保持相同的变量

#Code 2
df <- df %>% mutate(across(day1:day3,~ ./baseline))

输出:

  baseline      day1     day2 day3
1        1 2.0000000 2.000000    5
2        2 1.0000000 1.500000    2
3        3 0.6666667 1.333333    2

添加新数据后,您将会看到:

#Code 3
df2 <- df %>% mutate(across(day1:day3,.fns = list(fc = ~ ./baseline)))

输出:

  baseline day1 day2 day3   day1_fc  day2_fc day3_fc
1        1   NA    2    5        NA 2.000000       5
2        2    2    3    4 1.0000000 1.500000       2
3        3    2    4    6 0.6666667 1.333333       2
 类似资料:
  • 问题内容: 我有Project1和Project2。Project1依赖于Project2。每次在Project2中进行一些代码更改时,我都感到厌倦,我必须导出Project2 JAR文件,并将其复制到Project1的lib文件夹中。 有没有一种方法可以自动实现呢? 或者,是否还有其他方法可以让Project1知道Project2进行了某些更改? 在项目的“构建路径”中,有一种方法可以指定对Wo

  • 我有一个跨两个定义的复杂类型。XSD文件。 Parent.xsd: 嵌入式.xsd: 我的XML看起来像这样: 有没有办法改变事物,使嵌入的两个元素具有相同的前缀?我不能将嵌入类型复制到父对象中。外部原因的xsd。此外,不加区分地消除emb前缀的所有使用的解决方案将不起作用。

  • 问题内容: 我有一个带有Books的QuerySet,我想为每个Book结果添加一个字段。 在原始SQL中,我会写: 如何在Django中实现?我试过了,但似乎并不适合这种东西。 问题答案: 如遇票数可能的值是只有1和-1,你可以使用刚才提到他们总结注释:。 如果还有更多可能的值,则可以通过添加到上述查询中来过滤注释。 如果是更复杂的,你将不得不使用与。

  • 我在Python Pandas中使用一个数据框,该数据框的列名前缀为。我可以通过声明来访问给定的列。但是,当我尝试对其执行查询时,例如,它会抛出一个错误,即不是数据框的成员。 如何在名称前加上句点执行查询或其他类似操作? 此外,一些系列名称中也有空格。我假设带句点的列名的解决方案类似于包含空格的名称的解决方案。

  • 我想使用<code>dplyr::mutate()</code>在数据帧中创建多个新列。应动态生成列名及其内容。 来自iris的示例数据: 我创建了一个函数,可以从<code>Petal中修改我的新列。宽度变量: 现在我创建一个循环来构建我的列: 然而,由于mutate认为varname是一个文字变量名,因此循环只创建一个新变量(称为varname),而不是四个(称为petal.2-petal.5

  • 我有四张桌子A、B、C和D。 我需要选择值2(我从表D中猜测),其中值1和值3在表D中的同一行中,并且在表A和表C的行中都有相同的“城市”。 所以,如果表A有一行 表C有行 表D有行 然后我需要打印: