如何使用dplyr根据另一列的不同值在新列中填充不同的值?

Feng Chen

这是我的数据:

a <- data.frame(x=c('A','A','A','B','B','B'),
                y=c('Yes','No','No','Yes','No','No'),
                z=c(1,2,3,4,5,6))

我想以这种方式生成一个新列:

  1. Group by x,因此所有As 将在一个组中,所有Bs 将在另一个
  2. 对于每个组,如果y=Yes,则将z保留在新列中。如果y=No,则使用z带有y=Yes

因此,新数据应如下所示:

x    y   z   z1
A   Yes  1   1
A   No   2   1
A   No   3   1
B   Yes  4   4
B   No   5   4
B   No   6   4

我可以用这种方式来做:

a1 <- a %>%
   filter(y=='Yes') %>%
   distinct(x,y,z)
 a2 <- a %>%
    left_join(a1,by='x') %>%...

但是这样一来,我就不得不生a1成为中间人了。如何仅在一个管道中执行此操作而不生成像a1我的示例中那样的新变量

123

您可以合并两个管道并一次性执行相同的功能。

IE..

    a <- data.frame(x=c('A','A','A','B','B','B'),
                    y=c('Yes','No','No','Yes','No','No'),
                    z=c(1,2,3,4,5,6))

    a %>% left_join(a %>% filter(y=='Yes') %>% distinct(x,y,z), by='x') %>% select(-y.y)

由于连接,这会导致用 .x 和 .y 标记的重复列。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PowerBI:根据另一列中的不同值计算一列中的不同值

如何根据另一列的不同值从一列中获取值?

如何根据另一列中的值填充列?

如何根据另一列中的值填充另一列中的值?

根据PySpark中的另一列填充不同的列

根据与另一列不同的值对值进行计数

如何使用dplyr根据另一列中的值选择列?

如何根据表中另一列的不同值获取总行数和计数

使用 R 从基于另一列中的不同值的列中获取不同值

如何根据第一列中的值将不同的线拉到新的工作表

如何根据 Excel 中另一列的值填充一列?

R 数据框:如何根据另一列中不同值的列值对数据进行切片

尝试根据另一列 SQL 中的 vlue 更新具有不同值的新列的行

如何根据 Pandas 数据框中另一列的条件将值填充到新列中?

如何添加新列,并根据另一列的系列填充特定值?

根据 R 中另一列的条件,用相同的值填充整个新列

如何根据具有公共信息的不同数据框中另一列的值在数据框中创建新列?

根据来自另一列的不同值对sql值求和,并将结果放入数组中

Excel-根据另一列中的不同值对值求和

根据另一列中的值创建新列

根据另一列中的最大值从一列中选择不同的值

如何计算另一列中属于不同值的列中的所有相同值

如何根据另一列中的值填充组中的 np.nan 列?

如何根据熊猫中另一列中的空值填充列

如何根据另一列中的间隔填充熊猫中其他列的缺失值?

如何使用不同表中另一列的值替换列中JSON值的键?

通过计算熊猫另一列中的不同值来创建新列

根据另一列中不同行中的值创建数据框或小标题

如何根据一列的多个值选择不同的