按因子选择数据框中的第 n 个元素

2023-12-10

我有一个带有文本列的数据框name和因素city。首先按字母顺序排列city进而name。现在我需要获取一个数据框,其中每个数据框仅包含第 n 个元素city,保持这个顺序。如何在没有循环的情况下以漂亮的方式完成它?

I have:

name    city
John    Atlanta
Josh    Atlanta
Matt    Atlanta
Bob     Boston
Kate    Boston
Lily    Boston
Matt    Boston

我想要一个函数,它返回第 n 个元素city,即,如果它是第三个,则:

name    city
Matt    Atlanta
Lily    Boston

它应该返回NULL for name如果超出所选范围city,即第四个:

name    city
NULL    Atlanta
Matt    Boston

请仅使用基本 R 吗?


在基本 R 中使用by:

设置一些测试数据,包括额外的超出范围的值:

test <- read.table(text="name    city
John    Atlanta
Josh    Atlanta
Matt    Atlanta
Bob     Boston
Kate    Boston
Lily    Boston
Matt    Boston
Bob     Seattle
Kate    Seattle",header=TRUE)

在每个城市获得第 3 件物品:

do.call(rbind,by(test,test$city,function(x) x[3,]))

Result:

        name    city
Atlanta Matt Atlanta
Boston  Lily  Boston
Seattle <NA>    <NA>

为了得到你想要的,这里有一个小函数:

nthrow <- function(dset,splitvar,n) {
    result <- do.call(rbind,by(dset,dset[splitvar],function(x) x[n,]))
    result[,splitvar][is.na(result[,splitvar])] <- row.names(result)[is.na(result[,splitvar])]
    row.names(result) <- NULL
    return(result)
}

称呼它为:

nthrow(test,"city",3)

Result:

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

按因子选择数据框中的第 n 个元素 的相关文章

随机推荐

  • 具有 40+ 列的 mysql 表

    我的表格中有 40 多列 我必须添加更多字段 例如当前城市 家乡 学校 工作 大学 大学 将为许多匹配的用户提取这些用户数据 这些用户是共同的朋友 与其他用户朋友一起加入朋友表以查看共同的朋友 并且未被阻止并且还不是该用户的朋友 上面的请求
  • 在Conda环境中使用pip包

    我对如何通过安装软件包感到困惑pip and conda一起工作 我所知道的是 pip and conda安装不同的包格式 除了这一点之外 这里还有什么含义呢 pip无法安装conda封装格式 这对于这个问题的目的来说很好 因为您始终可以使
  • 在Python中组合列表

    我正在尝试合并 2 个列表并希望形成组合 a ibm dell b strength weekness 我想形成像这样的组合 ibm strength ibm weekness dell strength dell weakness 我尝试
  • 基于位置的增强现实 Android 应用程序

    我正在开发基于实时位置的增强现实 Android 应用程序 这是一个简单的概念 我的应用程序应该显示我周围的一些地方 我有 对此进行了深入研究 但我仍然遇到问题 我有我的 GPS 坐标 以及目标地点的 GPS 坐标 我的问题是 如何检索手机
  • Android:SQLite (ORMLite) 事务隔离级别

    我在我的 Android 项目中使用 ORMLite 我知道 Sqlite 负责文件级锁定 多个线程可以读取 一个可以写入 锁可以防止多次写入 有人可以解释一下 如果一个线程正在更新某些记录而另一个线程正在尝试读取该记录 会发生什么情况 线
  • 向上导航未启动父活动

    我有两项活动A and B其中 A 是 B 的父级 现在我显示一个启动 B 的通知 当我点击该通知时 B 就会启动 然后我点击up按钮 当活动 A 位于后台堆栈时 它可以正常工作 但否则应用程序只是关闭并且不会启动活动 A 我的设置 我已在
  • 子目录中的 Zend 应用程序使 Zend 布局链接正常工作

    我在子目录中设置了一个 Zend 应用程序 不要问为什么我必须这样做 不是我喜欢的方法 但我没有这样的选择 Zend 应用程序驻留在名为 dsa 的子目录中 http dsa dev dsa 我的 htaccess RewriteEngin
  • 如何确定 iPhone 6+ (plus) 处于标准模式还是缩放模式

    我正在尝试确定 iPhone 6 是处于标准模式还是缩放模式 但我找不到任何可以帮助确定这一点的 API 到目前为止 唯一指示手机处于哪种模式的是nativeScale if UIScreen mainScreen nativeScale
  • Numpy 矩阵乘法 U*B*U.T 产生非对称矩阵

    在我的程序中 我需要以下矩阵乘法 A U B U T where B is an M M对称矩阵 以及U is an N M其列正交的矩阵 所以我期望A也是一个对称矩阵 然而 Python 并没有这么说 import numpy as np
  • 可以读取但不能更新

    Problem 在 SQL Server 2008 R2 中 使用经典 ASP 页面中的 SQL 来更新数据库的任何尝试都会被拒绝 简而言之 可以读取 但无法在 ASP 页面中使用 SQL 更新 写入数据库 错误信息 SQL Server
  • 删除/删除数组中某些索引处的值

    我有一个像这样的数组 peoples dick jane harry debra hank frank 一个包含这样的键 keys 1 6 3 12 现在我可以写这样的东西 var peoplesStripedOfKeyPostions f
  • 图像列表/图像内存不足异常

    从 ImageList 获取图像时 我遇到了 OutOfMemoryException 我一直无法找到该问题的适当解决方案 我有一个自定义 ListView 控件 它附加了一个用于绘制 ListViewItems 的事件 然后调用一个用于绘
  • 如何在 Windows 中以编程方式安装驱动器?

    我们生产和销售一种设备 我们的用户有时希望通过多个 USB 集线器将其大量连接到他们的计算机 它是一种 USB 复合设备 同时具有人机接口 HID 和大容量存储 MSD 接口 Windows 会自动安装每个设备的文件系统 直到 Z 处的字母
  • JButton.setBounds(x,y,w,h) 似乎不起作用

    import javax swing JButton import javax swing JFrame import javax swing SwingUtilities public class SimpleExample extend
  • Docker:命令返回非零代码:137

    我的docker文件如下 Use python 3 6 image FROM python 3 6 ENV PYTHONUNBUFFERED 1 install required packages RUN apt get update RU
  • 如何找到给定数据库的 Sybase 索引列表?

    如何在 Sybase 中找到给定数据库的索引列表 Query against sysobjects and sysindexes SELECT o name i name FROM sysobjects o JOIN sysindexes
  • 获取给定一周的第一天

    我将当前周作为整数 截至目前为 43 我需要周一的日期 格式如 Mon Oct 25 我以为我可以通过一个函数来实现这一点 但我不知道该怎么做 有什么建议么 编辑 我尝试了 R 的建议 但没有给出预期的结果 难道是我执行错了 time t
  • 在 UIDocument 完成处理程序中,在 IOS 5 中永远不会被调用,但在 IOS 6 中可以工作

    在 UIDocument 完成处理程序中 在 IOS 5 中永远不会被调用 但在 IOS6 中可以工作 None
  • 如何使用 Word 互操作在表格中为每个新页面创建标题?

    我正在尝试创建一个带有标题的表格 我希望该表的每个新页面都重复此标题 如何使用 Word 2007 Interop 在 C 中执行此操作 Microsoft Office Interop Word Table table table Row
  • 按因子选择数据框中的第 n 个元素

    我有一个带有文本列的数据框name和因素city 首先按字母顺序排列city进而name 现在我需要获取一个数据框 其中每个数据框仅包含第 n 个元素city 保持这个顺序 如何在没有循环的情况下以漂亮的方式完成它 I have name