根据其他列和行有条件地计算一列中不同数量的项目

为阿尔菲

我对 R 比较陌生,所以如果这太离谱了,我深表歉意。但我有一个看起来像这样的数据集:

#simplified input - actual data has ~20K observations, 
#V1 is a categorical variable with 2 options, V3 is a categorical variable with 23 options

df <- tribble(
      ~V1, ~V2, ~V3,
      "A", "a", "Z",
      "A", "a", "Y",
      "A", "b", "X",
      "A", "b", "Z",
      "B", "c", "Z",
      "B", "a", "Z",
      "B", "a", "Y",
      "A", "d", "X",
      "A", "e", "X",
      "A", "f", "X",
      "A", "g", "X",
      "B", "g", "X",
      "B", "h", "X",
      "A", "i", "X",
    )

我正在尝试根据 V1 和 V3 的组合计算 V2 的不同值。在这个示例数据中,“a”可以在 A 和 B 中找到,并且可以归类为 Z 或 Y。所以我设想的输出看起来像这样,其中数字是 V2 的不同计数:

所需的输出:

df <- tribble(
      ~V1, ~Z, ~Y, ~X,
      "A_only", 1, 0, 5,
      "B_only", 1, 0, 1,
      "Both_A_and_B", 1, 1, 1
    )

老实说,我完全不知道如何做到这一点,所以任何想法都将不胜感激。

阿努希拉万

更新

问题解决了!

library(dplyr)
library(tidyr)

df %>%
  group_by(V1, V2, V3) %>%
  add_count() %>%
  pivot_wider(names_from = V3, values_from = n) %>%
  group_by(V2) %>%
  mutate(V1 = ifelse(length(V2) > 1, "Both_A_and_B", 
                     ifelse(length(V2) == 1 & V1 == "A", "A_only", 
                            "B_only"))) %>%
  distinct() %>%
  group_by(V1) %>%
  summarise(across(Z:X, ~ sum(.x, na.rm = TRUE)))


# A tibble: 3 x 4
  V1               Z     Y     X
  <chr>        <int> <int> <int>
1 A_only           1     0     5
2 B_only           1     0     1
3 Both_A_and_B     1     1     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫:根据其他列的值有条件地替换值

Python:根据其他两列中的值有条件地创建新列

有条件地连接数据框的行,并根据条件处理其他列

如何有条件地将一列填充到列表中另一列中的值?

根据另一列中的值有条件地计算一列的递归

根据R中一列中的连续值有条件地插入行

如何使用另一列中的值有条件地更改DF值

根据熊猫df中其他列的值有条件地填充列

根据其他列中的值计算一列中唯一实例的数量

有条件地将一列中的子字符串值替换为其他列的子字符串

根据其他几列的条件计算不同的一列

有条件地创建Dataframe列,其中列值的计算根据行输入而变化

根据其他列的值有条件地更改系列的值

Purrr-有条件地突变数据帧列表中的一列

根据另一列的行值有条件地返回一些行值的向量

根据Pyspark中另一列的值,有条件地从同一列的另一行值替换一行中的值?

如何根据R中其他列中的数据有条件地执行减法?

Excel公式-如何使用其他表格中的值有条件地填充列

有条件地在R中用另一列(但不在同一行中)的值填充一列的值

根据另一列中的数据有条件地从不同列中选择数据

根据所有列的值有条件地删除熊猫中的行

Excel:根据其他列中的值有条件地选择单元格范围

如何根据python字典的键和值有条件地将数据添加到Excel文件中的列,同时保持其他列一致

有条件地在查询中包含一列?

Laravel 有条件地选择数据库中的一列

如何根据另一列有条件地添加具有新日期时间的新列

有条件地在其他变量的同一列中添加带有变量的行

如何根据 julia 中的其他列值有条件地在数据框中创建新列

dplyr:根据另一列的条件有条件地对列进行排名?