将数据子集到 R 中第一次出现的位置

2024-02-17

我正在尝试对数据进行子集化,以便它只保留变量的第一次出现。我正在查看追踪工人职业生涯的面板数据,并尝试对数据进行子集化,以便它只显示直到每个人成为老板。

id  year    name    job    job2
1   1990    Bon     Manager 0
1   1991    Bon     Manager 0
1   1992    Bon     Manager 0
1   1993    Bon     Boss    1
1   1994    Bon     Manager 0
2   1990    Jane    Manager 0
2   1991    Jane    Boss    1
2   1992    Jane    Manager 0
2   1993    Jane    Boss    1

所以我希望数据看起来像:

id  year    name    job   job2
1   1990    Bon     Manager 0
1   1991    Bon     Manager 0
1   1992    Bon     Manager 0
1   1993    Bon     Boss    1
2   1990    Jane    Manager 0
2   1991    Jane    Boss    1

这看起来像是基本的审查,但为了我的分析,这是至关重要的......!任何帮助,将不胜感激。


这是一个 dplyr 解决方案,它使用两个有用的窗函数 http://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html lag() and cumall():

df <- read.table(header = TRUE, text = "
id  year    name    job    job2
1   1990    Bon     Manager 0
1   1991    Bon     Manager 0
1   1992    Bon     Manager 0
1   1993    Bon     Boss    1
1   1994    Bon     Manager 0
2   1990    Jane    Manager 0
2   1991    Jane    Boss    1
2   1992    Jane    Manager 0
2   1993    Jane    Boss    1
", stringsAsFactors = FALSE)

library(dplyr)

# Use mutate to see the values of the new variables
df %>% 
  group_by(id) %>%
  mutate(last_job = lag(job, default = ""), cumall(last_job != "Boss"))

# Use filter to see the results
df %>% 
  group_by(id) %>%
  filter(cumall(lag(job, default = "") != "Boss"))

We use lag()找出每个人上一年从事的工作,然后使用cumall()将所有行保留到“Boss”的第一个实例。如果数据尚未按年份排序,您可以使用lag(job, order_by = year)确保;确定lag()使用年份值而不是行顺序来确定哪一年是“去年”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据子集到 R 中第一次出现的位置 的相关文章

  • 零膨胀泊松分布的经验和理论分布图

    以下是我正在研究的一种数据集 data lt c 0 1 0 11 2 0 3 0 0 2 1 3 1 0 1 0 0 0 2 3 0 0 0 8 1 1 1 0 1 1 2 7 0 0 0 5 2 3 6 1 1 5 2 9 0 0 1
  • 您使用 Attach() 或按名称或切片调用变量吗?

    许多介绍 R 的书籍和指南都是从附加一个 R 语言的实践开始的 data frame这样您就可以通过名称调用变量 我一直发现用以下方式调用变量是有利的 符号或方括号切片 2 这样我就可以使用多个data frames 而不混淆它们和 或使用
  • 循环遍历列并将字符串长度添加为新列

    我有一个包含多列的数据框 并且希望为每个列输出一个单独的列 其中包含每行的长度 我试图迭代列名称 并为每列输出一个附加有 length 的相应列 例如 col1 col2 将转到 col1 列2 col1 长度 列2 长度 我正在使用的代码
  • 在 R 中使用两个 for 循环创建矩阵/数据框

    这是我在 SO 上的第一篇文章 所以请友善 我的问题与这个问题隐约相关 R中的双for循环创建矩阵 https stackoverflow com questions 44376020 double for loop in r creati
  • glmnet R 包中的 cv.glmnet 出现“drop(y %*% rep(1, nc)) 错误”错误

    我有一个返回 cv glmnet 模型的 auc 值的函数 尽管不是大多数时间 但在执行 cv glmnet 函数时 它经常返回以下错误 下降误差 y 代表 1 NC 在为函数 drop 选择方法时评估参数 x 时出错 y 中的错误 rep
  • 不同大小组的高效递归随机抽样

    这个问题是我之前关于递归随机抽样问题的后续问题高效的递归随机采样 https stackoverflow com questions 69824065 efficient recursive random sampling 当组大小相同或每
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • 不同的分位数:箱线图与小提琴图

    require ggplot2 require cowplot d iris ggplot2 ggplot d aes factor 0 Sepal Length geom violin fill black alpha 0 2 draw
  • 为闪亮的应用程序创建桌面图标

    当我在基本 R 提示中提供以下代码时 我会在浏览器中打开一个闪亮的应用程序 shiny runApp C Myapp 我使用 Windows 7 我试图创建一个桌面图标 以避免我的客户每次想要使用该应用程序时都键入上述代码 我创建了一个桌面
  • 为什么 quosures 在 group_by() 中起作用,但在 filter() 中不起作用?

    我正在构建一个函数 我将根据字符串操作数据框 在该函数中 我将根据字符串构建一个列名称 并使用它来操作数据框 如下所示 library dplyr orig df lt data frame id 1 3 amt c 100 200 300
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • 如何重试错误语句?

    如果某个语句出错 我如何简单地告诉 R 重试该语句几次 例如 我希望做类似的事情 tryCatch dbGetQuery Query database error function e if is locking error e If da
  • ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

    当我使用进行预测时forecast库 我注意到以下代码没有按预期运行 library forecast library dplyr df1 lt data frame gp gl 20 5 dt seq 1 100 get lt funct
  • 在 R 绘图上使用鼠标书写?

    我使用创建了散点图plot R 中的函数 有没有可能在这个图上画图 我想添加一条直线并获取它的参数 但在我看来abline 可能会很不方便 我想画很多条线 然后选择一条最合适的 我怎样才能完成这个任务 看看 RStudio 和这个例子 li
  • 如何连接 R 列表中的多个 .wav 文件?

    我有一个 wav 文件列表my list library seewave library tuneR data tico audio lt tico freq lt 22050 breaks lt c 0 0 2 0 4 0 6 0 8 i
  • 根据第二个数据帧中的匹配创建新列

    如果有两个数据框 top3df http dpaste com 1709875 and qw qw lt structure list id structure 1 25 Label c w01 w02 w03 w04 w05 w06 w0
  • ggplot2:图例中的斜体

    我正在尝试编辑图例中的标签 以便第一个标签 WT 为纯文本 而后续 7 个标签为斜体 我一直在使用element text face c plain rep italic 7 但这导致没有任何标签被转换为斜体 我有点困惑为什么它不起作用 因
  • R/ggplot2:如何匹配重叠区域图中的图例和绘图颜色?

    我有两个面积图 称为 蓝色 和 绿色 其中green大部分是在blue情节 但在极少数点上 它高于blue阴谋 我想使用透明度说alpha 0 2对于两者 并且还能够为每个指定颜色 我现在的问题是 自从green情节主要是在blue地块 其
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2

随机推荐

  • 无法使用数据绑定设置过滤器值?

    这个问题是通过深入研究原始问题而产生的 如何根据表行数据在表下拉列表中设置过滤器 https stackoverflow com questions 25381772 how to set filter in table dropdown
  • iPad 的自定义字体 - iOS 3.2 不起作用

    我正在构建一个仅适用于 iPad 的应用程序 我需要使用带有一些标签的自定义字体 因此我将它们添加到我的项目中 它们出现在我的 复制捆绑资源 的应用程序目标中 我还将他们的名字添加到我的应用程序的 Info plist 文件中
  • javascript 中类的异步函数

    我在nodejs中创建了一个类 class ApnService sendNotification deviceType deviceToken msg type id try const note await apnProvider se
  • Redis pub sub 最大订阅者和发布者

    谁能告诉我 Redis pub sub 可以支持的最大并发通道数是多少 订阅者和发布者的数量是否有上限 Redis 使用一个dict 与键相同的结构 用于存储每个客户端和所有客户端的频道订阅 保留每个订阅的哈希值以及订阅的客户端列表 因此总
  • 使用 libblkid 查找分区的 UUID

    我在看libblkid http ftp kernel org pub linux utils util linux ng libblkid docs index html并对文档感到困惑 有人能给我提供一个示例 说明如何使用这个库找到 L
  • SQL Server 表审计触发器

    我有两张桌子Customers and AuditTable 当我修改Customers表中 我需要插入一条新记录AuditTable CREATE TABLE dbo AuditTable Id int IDENTITY 1 1 NOT
  • 页内搜索使用 contains() 显示/隐藏 div 内容

    我正在尝试向我的常见问题解答页面添加搜索功能 但我完全陷入困境 我想要的是一个文本框 用户在其中输入关键字 或单词 该文本框为关键字运行 jquery 并为所有相关答案设置 display block 到目前为止我所拥有的是这样的
  • 在 jQuery 中选择前 N 个兄弟?

    我正在尝试设置 jQuery 选择器 但我不太确定需要如何编写它 我有一个无序列表 看起来像这样 ul li something li li something li li something li li something li li c
  • UserManager.AddToRole 不起作用 - 外键错误

    在我的 ASP NET MVC 应用程序中 我有一些代码应该相当简单 UserManager AddToRole user id Admin 我刚刚收到这个错误 INSERT 语句与 FOREIGN KEY 约束冲突 FK dbo AspN
  • python 从堆中创建所有内容?

    在 C C 中 当您在函数内创建局部变量时 堆栈中会有变量 http effbot org zone call by object htm http effbot org zone call by object htm CLU 对象独立于过
  • 提交联系表 7 后创建 Woocommerce 产品

    我有 联系表 7 表格 并且在附近的范围内有一个 btQuoteTotalCalc 类的号码 提交此联系表单后 我使用 JavaScript 捕获号码 然后使用该号码作为价格创建 woocommerce 产品 并将用户重定向到结账页面 我正
  • 如何在 Highcharts / Highstock 中获取系列的 id

    如何获取系列的 id 在里面API http api highcharts com highstock Series只有名称和数据等 但没有 ID 我怎样才能从系列中获取id 我使用以下方法循环图表中的所有系列 chart series e
  • 查找过去 30 天内分配给 X 的工作项

    我正在尝试查找过去 30 天内分配给人员 X 的所有工作项 我遇到的大问题是 过去 30 天 部分 我考虑过使用 ever 或 asof 关键字 但还找不到一个好的答案 类似WHERE Assigned To X AND Assigned
  • WHERE 子句中的 CASE WHEN 因缺少关键字错误而失败

    在oracle中 我尝试使用日期作为where子句中的条件 我正在寻找的是 如果员工是在 2020 年 5 月 7 日之后创建的 则不要使用条件 XML VAL NOT LIKE 但如果他们是在 2020 年 5 月 7 日之前创建的 则无
  • 如何处理 NSCollectionView 中的按钮单击

    我有一个NSCollectionView OS X 不是 iOS 绑定到我的模型 每个集合视图项目都有一个按钮和一个标签 我正在处理点击操作 并且我有sender and event争论 但我无法区分一个按钮和其他按钮 大多数不涉及集合视图
  • wpf VisualState 与 wpfToolkit 冲突?

    我正在 VS2010 中构建一个应用程序 使用 wpfToolkit 3 5 作为引用程序集 我尝试从 Expression Blend 4 添加一些 VisualStates 但在尝试构建项目时收到以下错误 类型 System Windo
  • 如何在 Flink 中引用外部 Jar

    每个人 我尝试在所有任务管理器中以将其复制到 FLINK lib 的方式在 Flink 中引用我的公司 jar 但失败了 而且我不想打包一个胖罐子 太重而且浪费时间 我认为第一种方法也不是一个好主意 因为我必须管理整个集群中的jar 有谁知
  • 将(垂直)UIPageViewController 嵌套在另一个(水平)UIPageViewcontroller 中

    我的问题很大UIPageViewController 我想使用部分和子部分在我的应用程序中呈现内容 所以 我创建了 two 的实例UIPageViewController 水平 红色 和垂直 蓝色 早些时候我说过我创建了 两个 实例 这并不
  • 哪种方法更好地从数据库检索数据

    我对选择两种方法感到困惑 Scenario有两张桌子Table 1 and Table 2分别 Table 1包含用户的数据 例如名字 姓氏等 Table 2包含每个用户拥有的汽车及其描述 IEColor Registration No e
  • 将数据子集到 R 中第一次出现的位置

    我正在尝试对数据进行子集化 以便它只保留变量的第一次出现 我正在查看追踪工人职业生涯的面板数据 并尝试对数据进行子集化 以便它只显示直到每个人成为老板 id year name job job2 1 1990 Bon Manager 0 1