首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除R中重复变量的行

删除R中重复变量的行
EN

Stack Overflow用户
提问于 2014-04-04 17:10:38
回答 4查看 110关注 0票数 1

我有重复年份的拼板数据,但我想删除job值较小的行:

代码语言:javascript
复制
id  name    year    job
1   Jane    1990    100
1   Jane    1992    200
1   Jane    1993    300
1   Jane    1993    1
1   Jane    1997    400
1   Jane    1997    2
2   Tom     1990    400
2   Tom     1992    500
2   Tom     1993    700
2   Tom     1993    1
2   Tom     1997    900
2   Tom     1997    3

我想要的是:

代码语言:javascript
复制
id  name    year    job
1   Jane    1990    100
1   Jane    1992    200
1   Jane    1993    1
1   Jane    1997    2
2   Tom     1990    400
2   Tom     1992    500
2   Tom     1993    1
2   Tom     1997    3

有没有办法做到这一点?

EN

回答 4

Stack Overflow用户

发布于 2014-04-04 17:50:41

你有不同的可能性,例如plyr和dplyr:

代码语言:javascript
复制
# plyr
ddply(tab, .(id, name, year), summarise, job=min(job))
# dplyr
tabg <- group_by(tab, id, name, year)
summarise(tabg, job=min(job))
# basic fonction
aggregate(tab[,"job", drop=FALSE], tab[,3:1], min)
票数 2
EN

Stack Overflow用户

发布于 2014-04-04 17:44:30

您可以使用基数R和函数order,正如詹姆斯所建议的那样:

代码语言:javascript
复制
> tab[order(tab$job),][! duplicated(tab[order(tab$job), c('id', 'year')], fromLast=T), ]
   id name year job
1   1 Jane 1990 100
2   1 Jane 1992 200
3   1 Jane 1993 300
5   1 Jane 1997 400
7   2  Tom 1990 400
8   2  Tom 1992 500
9   2  Tom 1993 700
11  2  Tom 1997 900
票数 0
EN

Stack Overflow用户

发布于 2014-04-04 17:46:37

您可以使用ddply来执行以下操作:

代码语言:javascript
复制
x <- read.table(textConnection("id  name    year    job
 1   Jane    1990    100
 1   Jane    1992    200
 1   Jane    1993    300
 1   Jane    1993    1
 1   Jane    1997    400
 1   Jane    1997    2
 2   Tom     1990    400
 2   Tom     1992    500
 2   Tom     1993    700
 2   Tom     1993    1
 2   Tom     1997    900
 2   Tom     1997    3"),header=T)

library(plyr)
ddply(x,c("id","name","year"),summarise, job=max(job))
  id name year job
1  1 Jane 1990 100
2  1 Jane 1992 200
3  1 Jane 1993 300
4  1 Jane 1997 400
5  2  Tom 1990 400
6  2  Tom 1992 500
7  2  Tom 1993 700
8  2  Tom 1997 900

请注意,我已经获得了您在描述中要求的内容。您的示例输出与此相矛盾。如果您确实想要示例输出,请使用min而不是max

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22858370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档