r - 获取某个id的最后两个事件并进行排列

标签 r data-analysis

这只是一个示例数据框。

enter image description here

我想获取每个id_num的最后两个事件,并制作另一个由id_num和最后两个事件组成的数据帧作为Event1Event2 分别。

enter image description here

如何做到这一点?

最佳答案

这可以使用 data.table 在一行中完成。

library(data.table)
dt <- data.table(id_num = rep(1:3, 4), event = paste0("E", 1:12))
    #     id_num event
    #  1:      1    E1
    #  2:      2    E2
    #  3:      3    E3
    #  4:      1    E4
    #  5:      2    E5
    #  6:      3    E6
    #  7:      1    E7
    #  8:      2    E8
    #  9:      3    E9
    # 10:      1   E10
    # 11:      2   E11
    # 12:      3   E12

dt[, .(event_1 = .SD[(.N-1), event], event_2 = .SD[.N, event]), by = id_num] 
    #    id_num event_1 event_2
    # 1:      1      E7     E10
    # 2:      2      E8     E11
    # 3:      3      E9     E12

关于r - 获取某个id的最后两个事件并进行排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253664/

相关文章:

r - R 中的条形图图例位置(避免操作重叠)

将 for 循环中的 rbind 替换为 lapply? ( hell 第二圈)

database - 如何找到时间序列数据的最新项目?

r - 将 plyr::mapvalues 与 dplyr 一起使用

r - 如何比较7个数字列,获取它们之间的最小数字并从R中的字符变量插入值?

r - 安全、优雅地从向量中删除特定元素

SQL:计算某个值从第一次出现到接下来的五分钟的出现次数,并为下一次出现重复相同的操作

python - 构成 pandas dataframe 单元的数组的最大值

python - 在 pandas 中向我现有的数据框添加新行时出错

mysql - 我如何滞后 MySQL 中的列?