我需要从数据框中的某些特定行(第 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),]
这可行,但必须有一种更优雅的方法来做到这一点。
感谢提示。
也许复合过滤器语句对您有用?我正在改变行号
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