只保留具有多个观察结果的数据组 [英] Keep only groups of data with multiple observations

查看:103
本文介绍了只保留具有多个观察结果的数据组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用多个观察结果来保留唯一的数字。



我有以下代码

 帮助<  - 数据。 frame(deid = c(1,5,5,5,5,5,5,12,12,12,12),
session.number = c(1,1,2,3,4,5 ,6,1,2,3,4),
days.since.last = c(0,0,7,14,93,5,102,0,21,104,4))

deid session.number days.since.last
1 1 1 0
2 5 1 0
3 5 2 7
4 5 3 14
5 5 4 93
6 5 5 5
7 5 6 102
8 12 1 0
9 12 2 21
10 12 3 104
11 12 4 4

我的微弱尝试是使用group_by,然后使用filter()命令

  help%>%group_by(deid)%>% filter(session.number> = 2)

但是,它只保持session.number为2或更大。所以我摆脱了deid = 1,但所有其余的deid数据从session.number 2开始,而不是session.number 1.



我正在尝试告诉R是保持团体(deid)大于1的观察(session.number)



非常感谢任何帮助。

解决方案

这应该做 - 你需要通过使用 n()

  help%>%group_by(deid)%>%filter (n()> 1)

deid session.number days.since.last
1 5 1 0
2 5 2 7
3 5 3 14
4 5 4 93
5 5 5 5
6 5 6 102
7 12 1 0
8 12 2 21
9 12 3 104
10 12 4 4


I am attempting to keep only deids with multiple observations.

I have the below code

help <- data.frame(deid = c(1, 5, 5, 5, 5, 5, 5, 12, 12, 12, 12),
                   session.number = c(1, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4),
                   days.since.last = c(0, 0, 7, 14, 93, 5, 102, 0, 21, 104, 4))

   deid session.number days.since.last
1     1              1               0
2     5              1               0
3     5              2               7
4     5              3              14
5     5              4              93
6     5              5               5
7     5              6             102
8    12              1               0
9    12              2              21
10   12              3             104
11   12              4               4

My feeble attempt was to use the group_by and then the filter( ) command

help %>% group_by(deid) %>% filter(session.number >=2)

However, it only keeps session.number's at 2 or greater. So I get rid of the deid = 1, but all the remaining deid data starts at session.number 2, and not session.number 1.

What I am trying to tell R is to keep the groups (deid) with greater than 1 observation (session.number)

Any assistance is greatly appreciated.

解决方案

this should do it - you need to filter by number of observations in each group which is got using n():

help %>% group_by(deid) %>% filter(n()>1)

  deid session.number days.since.last
1     5              1               0
2     5              2               7
3     5              3              14
4     5              4              93
5     5              5               5
6     5              6             102
7    12              1               0
8    12              2              21
9    12              3             104
10   12              4               4

这篇关于只保留具有多个观察结果的数据组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆