简体   繁体   English

根据组条件从数据框中选择行

[英]Select rows from data frame based on condition by group

I have a data frame which is a list of lists - a list of storms, each point of a storm is a row.我有一个数据框,它是一个列表列表 - 一个风暴列表,风暴的每个点都是一行。 One column is whether each point in the storm is over land.一列是风暴中的每个点是否都在陆地上。 I'm able to work out which storms have made landfall, however I do not know how to select only those storms, ie create a new data frame of only those storms that have made landfall.我能够确定哪些风暴登陆了,但是我不知道如何只选择那些风暴,即创建一个仅包含登陆的风暴的新数据框。

This code lets me know whether a storm has made landfall (by grouping by ID it sums the in region column (1 or 0) and if greater than 1 says it's made landfall):这段代码让我知道风暴是否已经登陆(通过按 ID 分组,它对区域列(1 或 0)求和,如果大于 1 表示它已经登陆):

land_tracks <- all_tracks[, sum(inregion) > 0, by = ID]

Gives me:给我:

                  ID    V1
 1: 1987051906_15933  TRUE
 2: 1987060118_16870  TRUE
 3: 1987061306_18015  TRUE
 4: 1987062100_18878  TRUE
 5: 1987062918_19507 FALSE
 6: 1987070512_20168  TRUE
 7: 1987070812_20341  TRUE
 8: 1987071218_20635  TRUE
 9: 1987071412_20762  TRUE
10: 1987071606_20881  TRUE

How do I use this to go through all_tracks to find all the rows which match the ID where V1 == TRUE ?我如何使用它来遍历 all_tracks 以查找与V1 == TRUE的 ID 匹配的所有行?

I regularly have the issue that land_tracks has 41 rows, all_tracks has 1879 rows, and R raises an issue about recycling.我经常遇到一个问题, land_tracks有 41 行, all_tracks有 1879 行,而 R 提出了一个关于回收的问题。

也许你可以在这两个表之间做一些像 INNER JOIN 这样的事情:

merge(all_tracks,land_tracks[which(land_tracks$V1== TRUE)], by = 'ID')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM