我有一个long
数据集,类似于以下内容:
|patient_id |group_number|
|------------------------|
|1 |3 |
|1 |5 |
|2 |5 |
|2 |4 |
|3 |3 |
假装有更多的观察结果,以及更多独特的群组编号。我试图删除group_number在数据集中少于50次出现的所有观察。我觉得这将涉及创建一个包含超过50次的group_numbers列表(可能在numlist中),然后如果group_number不在numlist中则删除该行。但是,我的问题是创建这个numlist。
到目前为止,我已尝试使用tab
获取已排序频率列表,然后使用这些值:
tab group_number, sort matcell(x)
svmat x
list x if x > 50 & x != .
这会得到一个包含超过50次的值的频率列表。但是,如何将此列表转换为删除行,这让我感到惊讶。我是在正确的轨道上,还是有更好的方法?
当然,我可以用a,
来实现这一目标drop if group_number == 3 | if group_number == 4 | if group_number == 5
但继续列出所有组号< 50次出现。不幸的是,这对我的数据集的大小来说不太可行。
答案 0 :(得分:1)
这里的代码会丢弃观察次数少于2的组的所有观察结果。
mListOfData.add(newData);
mListViewAdapter.notifyDataSetChanged();