楼主: syhlxhx1
5461 7

[有偿编程] R语言 如何按条件删减行 [推广有奖]

  • 0关注
  • 0粉丝

高中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
19793 点
帖子
18
精华
0
在线时间
27 小时
注册时间
2017-7-31
最后登录
2022-10-15

楼主
syhlxhx1 发表于 2018-11-23 10:18:06 |AI写论文
5论坛币
按“ID”列,若某一值出现次数小于3,则该值对应的行全部删除
(如ID=2,出现1次,不满足条件,该行删除;ID=1出现3次,满足条件,所有行保留)

应该用什么函数?怎么编呢?

数据如下:
F1        Poi        X1        X30        ID
S2        1        35        190        1
S5        4        35        190        1
S2        1        35        190        1
S5        4        35        190        2
S2        1        35        190        3
S5        4        35        190        3
S2        1        35        190        3
S5        4        35        190        4
S2        1        35        190        5
S5        4        35        190        5
S2        1        35        190        5
S5        4        35        190        7
S2        1        35        190        7
S5        4        35        190        7

最佳答案

Kun806 查看完整内容

import tidyverse analydb % left_join(analydb,by=c("ID")) %>% filter(countn >3)
关键词:满足条件 出现次数

回帖推荐

jgchen1966 发表于4楼  查看完整内容

## 有一点不对,改如下: library(tidyverse) library(magrittr) ### analydb_obey % group_by(ID) %summarise(countn = n()) %>% right_join(analydb,by="ID") %>% filter(countn >=3)

沙发
Kun806 学生认证  发表于 2018-11-23 10:18:07
import tidyverse

analydb <- # import data

analydb_obey <- analydb %>% group_by(ID) %summarise(countn = n()) %>% left_join(analydb,by=c("ID")) %>% filter(countn >3)
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
showbox 发表于 2018-11-23 10:23:45
对ID书据用table,拿到统计数据后,把次数少于3的ID拿出来(用which),然后去掉

板凳
jgchen1966 发表于 2018-11-23 11:11:06
Kun806 发表于 2018-11-23 10:36
import tidyverse

analydb % left_join(analydb,by=c("ID")) %>% filter(countn >3)
##  有一点不对,改如下:
library(tidyverse)
library(magrittr)
###
analydb_obey <- analydb %>% group_by(ID) %summarise(countn = n()) %>%
                          right_join(analydb,by="ID") %>% filter(countn >=3)
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
Kun806 学生认证  发表于 2018-11-24 10:35:28
jgchen1966 发表于 2018-11-23 11:11
##  有一点不对,改如下:
library(tidyverse)
library(magrittr)
谢谢!

地板
syhlxhx1 发表于 2019-9-11 15:24:39
Kun806 发表于 2018-11-23 10:18
import tidyverse

analydb % left_join(analydb,by=c("ID")) %>% filter(countn >3)
Error: n() should only be called in a data context
Call `rlang::last_error()` to see a backtrace

> rlang::last_error()
<error>
message: n() should only be called in a data context
class:   `rlang_error`
backtrace:
  1. dplyr::group_by(., ID)
  8. plyr::summarise(., countn = n())
  9. [ base::eval(...) ] with 1 more call
11. dplyr::n()
12. dplyr:::from_context("..group_size")
13. `%||%`(...)
Call `rlang::last_trace()` to see the full backtrace

求问,代码输入后,显示这些是什么原因呢?

7
syhlxhx1 发表于 2019-9-11 15:24:55
jgchen1966 发表于 2018-11-23 11:11
##  有一点不对,改如下:
library(tidyverse)
library(magrittr)
Error: n() should only be called in a data context
Call `rlang::last_error()` to see a backtrace

> rlang::last_error()
<error>
message: n() should only be called in a data context
class:   `rlang_error`
backtrace:
  1. dplyr::group_by(., ID)
  8. plyr::summarise(., countn = n())
  9. [ base::eval(...) ] with 1 more call
11. dplyr::n()
12. dplyr:::from_context("..group_size")
13. `%||%`(...)
Call `rlang::last_trace()` to see the full backtrace

求问,代码输入后,显示这些是什么原因呢?

8
药引子5 发表于 2019-9-13 12:47:02
提供一下更简单的代码:
library(dplyr)
your_data %>% group_by(ID) %>% mutate(count = n()) %>% filter(count > 3) %>% select(-count)

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 17:37