R:If-else/mutate(?) 语句,其中根据条件将新列值添加到另一列和行的值中

问题描述 投票:0回答:1

使用 R,我很快就会迷失在条件/if-else 类型的工作中。通常我可以使用堆栈溢出线程来解决问题,但我还没有弄清楚如何搜索这个特定问题。假设我有以下 DF:

A 栏 B 栏 C 栏
熊猫 变体 1 10.0
猴子 变体 2 5.0
猴子 变体 1 7.0
熊猫 变体3 8.0

我想创建一个新专栏,D 栏。 如果 B 列 == 变体 2 以外的任何变体,那么我想要 D 列 == C 列的值。 如果B列==“变体2”,那么我想要D列的值==(当A列相同但B列是变体1时,C列+C列)。

因此,对于上表,结果将是:

A 栏 B 栏 C 栏 D 栏
熊猫 变体 1 10.0 10.0
猴子 变体 2 5.0 12.0
猴子 变体 1 7.0 7.0
熊猫 变体3 8.0 8.0

我尝试了几种不同的 if/else 语句来尝试让事情顺利进行,但没有一个能够接近。任何解决方案将不胜感激!

r dataframe if-statement data-manipulation
1个回答
0
投票

这里有一个选项:

library(dplyr)

df |>
  group_by(`Column A`) |>
  filter(any(`Column B` == "Variant 2")) |>
  summarize(`Column C` = sum(`Column C`), `Column B` = "Variant 2") |> 
  rows_update(df, y = _, by = c("Column A", "Column B"))

基本上,您会取出“当 A 列相同时”和

Column B == "Variant 2"
的行并对值求和,然后仅更新这些行(因为其他行保持不变)。

© www.soinside.com 2019 - 2024. All rights reserved.