排除 R 中已排序 data.frame 中的行

use*_*247 0 r subset dataframe

我有一个包含 99 行的两列数据框,我已“按升序排序”,但现在我只想根据第二列保留数据框的第一行和最后十行(1:10、90:99) (“改变”)。

例如

ID_NUM      Change
1             -55223
42            -2321
6             -201
20            17
99            93
53            1009
Run Code Online (Sandbox Code Playgroud)

...ETC。

如何创建一个新的数据框,从现有数据框中排除中间的 11:89 行?

Bro*_*ieG 5

假设您的数据框已经排序(就像这里的情况一样),您可以创建索引向量(两种方法产生相同的结果,选择您最喜欢的):

df[c(1:10, 90:99), ]   # Include only begin and end
df[-c(11:89), ]        # Exclude middle
Run Code Online (Sandbox Code Playgroud)

c只是将多个向量连接成一个(索引)向量。如果向量具有负值(并且只有负值),则忽略与这些值对应的行。以及适用于任意长度数据帧的版本(当然有足够的行):

df[-c(11:(nrow(df) - 10)),  ]
df[c(1:10, (nrow(df) - 10):nrow(df)), ]
df[c(head(seq(len=nrow(df)), 10), tail(seq(len=nrow(df))), 10), ]  # borrowing a bit from rawr
Run Code Online (Sandbox Code Playgroud)