为了账号安全,请及时绑定邮箱和手机立即绑定

基于每组行数的子集数据帧

基于每组行数的子集数据帧

陪伴而非守候 2019-06-25 11:04:22
基于每组行数的子集数据帧我有这样的数据,其中一些“名字”出现超过3次:df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)   name x1    a 12    a 23    a 34    b 45    b 56    c 67    c 78    c 89    c 9我希望根据每个级别中的行数(观察)对数据进行子集(筛选)。name变量。如果某一水平name发生3次以上,我要删除属于该级别的所有行。所以在这个例子中,我们会删除观察name == c,因为有> 3该组中的行:  name x1    a 12    a 23    a 34    b 45    b 5我写了这段代码,但没能让它起作用。as.data.frame(table(unique(df)$name))subset(df, name > 3)
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

使用dplyr一揽子:

df %>%
  group_by(name) %>%
  filter(n() < 4)# A tibble: 5 x 2# Groups:   name [2]
  name      x  <fct> <int>1 a         12 a         23 a         34 b         45 b         5

n()返回当前组中的观察数,因此我们可以group_by名称,然后只保留属于该组中行数小于4的部分的行。


查看完整回答
反对 回复 2019-06-25
  • 2 回答
  • 0 关注
  • 537 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信