使用 row_number 过滤数据框

问题描述 投票:0回答:1

我需要从数据框中的某些特定行(第 2、9、14、19、24 等行)中提取数据。我基本上可以通过下面的

filter
命令提取第 9、14、19、24 等行4 模数 5.

Parsed_Data_Frame <- Source_Data_Frame %>% filter(row_number() %%5 == 4)

但是,这错过了第 2 行,并且还读取了我不需要的第 4 行。

我通过几个步骤强制执行了此操作,将第 2 行保存到一个数据帧 (Header_Data_Frame) 中,将其余数据保存到另一个数据帧 (Data_Frame) 中。最后我使用

rbind
将两个数据框组合在一起。然后,我从最后一个数据帧中删除了第 2 行,因为这是我不想要的 Data_Frame 中的第 4 行。

        Header_Data_Frame <- Temperature_Data_Frame[2,]
        Data_Frame <- Temperature_Data_Frame %>% filter(row_number() %%5 == 4)
        Junction_Data_Frame <- rbind(Header_Data_Frame,Data_Frame)
        Junction_Data_Frame <- Junction_Data_Frame[-c(2),]

这可行,但必须有一种更优雅的方法来做到这一点。

感谢提示。

r row-number rbind
1个回答
0
投票

也许复合过滤器语句对您有用?我正在改变行号

rn
列,只是为了在过滤发生之前显示起始行号 - 您不需要
mutate()
调用。

> mtcars %>% 
    mutate(rn = row_number(), .before = 1) %>% 
    filter((row_number() %% 5 == 4 & row_number() > 4) | row_number() == 2)

               rn  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4 Wag   2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Merc 230        9 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 450SLC    14 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Honda Civic    19 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Camaro Z28     24 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Ford Pantera L 29 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
© www.soinside.com 2019 - 2024. All rights reserved.