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