创建新列,按组包含另一列的最后一个值

用户名

我有一个“事件”列,并希望基于“事件”的值创建一个新列“ ever_event”。具体而言,如果在最后一个时间段内“ event” = 1,则对于给定ID,“ ever_event”在所有时间段内均= 1。如果在最后一个时间段内“ event” = 0,则对于给定ID,“ ever_event”在所有时间段内都将= 0。

新的数据集将如下所示:

id  time event   ever_event
1      0    0        1
1      1    0        1
1      2    0        1
1      3    0        1
1      4    1        1
2      0    0        0
2      1    0        0
2      2    0        0
2      3    0        0
2      4    0        0

这是示例数据帧。我有“事件”列,我需要一个“ ever_event”列。

structure(list(id = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 6L, 
6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 
10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 
12L, 12L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L, 15L, 
15L, 15L, 15L, 15L, 16L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L, 
17L, 18L, 18L, 18L, 18L, 18L, 19L, 19L, 19L, 19L, 19L, 20L, 20L, 
20L, 20L, 21L, 21L, 21L, 21L), event = c(0, 0, 0, 0, 0, 0, 0, 
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 1, 0, 0, 0, 0)), label = "HPFS_RL_100K", row.names = c(NA, 
-100L), class = c("tbl_df", "tbl", "data.frame"))
冰激凌巨嘴鸟

简单的data.table解决方案,创建一个新变量ever_event,其值等于的最后一个值event

library(data.table)
setDT(df)

df[, ever_event := last(event), by = id]

基础R解决方案

df$ever_event <- with(df, ave(event, id, FUN = function(x) tail(x, 1)))

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从组内最后一个非 NA 行的列中选择值并将其添加到另一列以创建新列

R:使用现有值创建一个新列,以另一列的组为条件

sed或awk:按2列分组,并获取另一列的最后一个值

如何创建一个新列,按每个 n 数字对另一列值进行分组?熊猫

创建一个新列,该列是按日期将一列与另一列相加的总和

添加新列,每行作为另一列的上一个组值

熊猫-用另一列的最后N个值的总和创建新列

基于组的另一列中的值在一个列上创建值

如何创建一个新列,它告诉一个值是否唯一包含在另一列中?

Pandas 根据另一列的非空值创建一个新列

使用另一列的最大值创建一个新列

数据框,使用基于另一列索引的值创建一个新列

R:如何创建一个基于另一列某些值的新列?

根据另一列和另一个表中的值创建一个新列

熊猫:创建一列,在另一列中包含“下一个”更改后的值

为另一个表中的每个元素创建一个包含一列的新表

从第三列为1的另一列中的最后一个值创建pandas df列

创建一个新列,在两列中添加天数,其中一列包含数据,另一列包含ID

熊猫-使用groupby创建另一列的最后N个值的总和来创建新列

如果另一列包含特定文本,则查找列的最后一个条目

如何在熊猫中另一列的两个值之间创建一个包含行数的列

创建一个新列,其中包含另一列的子字符串列表

Python Pandas数据框创建一个新列,其中包含另一列的减法

如何迭代另一列中的嵌套字段以根据另一个值创建新列?

创建一个新列,该列采用 R 中另一列的初始值

如何创建一个列来告诉我另一列是否包含字母数字值?

R:新列与另一列最大值之间的差异(按组)

如何计算在Pandas数据框中同时包含一组列中的值和另一列中的另一个值的行数?

根据熊猫数据框中另一列的最后一个值填充列