使用R data.table查询时,如何获取匹配观测的行号?
在data.table中获取匹配行的行号(针对House Prices数据集)
刚好碰到过类似的需求,我来给你说两种简单的解决办法:
方法1:只获取匹配的行号(用which=TRUE参数)
如果你的需求仅仅是拿到这些行的索引,直接把which=TRUE作为参数加到查询的末尾就行——data.table的语法允许在i,j之后附加这类控制参数:
combined_df[is.na(GarageArea), which = TRUE]
执行后会直接返回一个包含匹配行号的向量,比如假设那行是第15行,就会输出[1] 15。
方法2:同时获取行号和指定列的数据(用.I)
要是你想在返回结果里同时看到行号和garage_num_vars对应的列数据,就需要在j的部分把行号(用.I表示当前行的索引)和目标列一起返回:
- 如果你已经明确知道列名,可以直接写:
combined_df[is.na(GarageArea), .(RowNum = .I, GarageYrBlt, GarageCars, GarageArea)]
- 如果你想用预定义的
garage_num_vars变量来指定列,这样写更灵活:
combined_df[is.na(GarageArea), c(.("RowNum" = .I), mget(garage_num_vars))]
这样返回的结果就会多一列RowNum,显示该行在原数据表中的实际行号,完美匹配你要的输出格式。
补充说明下:你原来的查询没有返回行号,是因为data.table默认只返回j参数指定的列,行号属于元数据,需要显式通过which=TRUE或.I来获取~
内容的提问来源于stack exchange,提问作者Fiboniz
相关产品推荐
相关产品推荐

