楼主: 熊小贤
1355 5

[问答] 请教一个R编程的小问题 [推广有奖]

  • 2关注
  • 0粉丝

等待验证会员

已卖:66份资源

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
1102 个
通用积分
0.0600
学术水平
4 点
热心指数
6 点
信用等级
1 点
经验
461 点
帖子
36
精华
0
在线时间
169 小时
注册时间
2013-3-25
最后登录
2021-6-7

楼主
熊小贤 发表于 2014-3-9 09:48:11 |AI写论文
100论坛币
请教一个R编程的问题:
我有这样一个数据
number   id                name        type
22           123              asd            1
33           323              sdsd           2
11           454              ere             1
11           454              ere             2
55           565              ass             1
55           565               ass            2
77           212               ttt             2
88            22               ero             1
33           1234            gfg             1
33           1234            gfg             2
...........
...........
可以看到(第3、4行,5、6行,9、10行)前三列是一样的,只有第4列type不一样
我现在想把这样前三列一样的前后两个观测,只保留第四列type为1的观测,应该怎么办?
期望得到这样的结果:
number   id                name        type
22           123              asd            1
33           323              sdsd           2
11           454              ere             1
55           565              ass             1
77           212               ttt             2
88            22               ero             1
33           1234            gfg             1

也就是删除了原来的第4行,第6行和第10行
先在这里谢谢大家了!

关键词:R编程 小问题 Number type name number

沙发
nieqiang110 学生认证  发表于 2014-3-9 11:54:27
假设你的原文件名为data,修改后的文件名为newdata
newdata<-data[-c(4,6,10),]

藤椅
nuomin 发表于 2014-3-9 17:00:28
  1. xmatri <- yourdata
  2. charvec <- paste(xmatri[,1],xmatri[,2],xmatri[,3],sep="")
  3. rowid <- duplicated(charvec)
  4. resultmatri <- xmatri[!rowid,]
复制代码

板凳
迷途mitu 发表于 2014-3-11 10:52:12
  1. N=length(data[,1])
  2. M=matrix(0,N,4)
  3. M[1,]=data[1,]
  4. for(i in 2:N)
  5. {
  6. if(data[i,1]==data[i-1,1]&&data[i,2]==data[i-1,2]&&data[i,3]==data[i-1,3]&&data[i,4]=="2")
  7. {}
  8. else
  9. M[i,]=data[i,]
  10. }
  11. a=M[,1]
  12. b=M[,2]
  13. c=M[,3]
  14. d=M[,4]
  15. a=a[a!="0"]
  16. b=b[b!="0"]
  17. c=c[c!="0"]
  18. d=d[d!="0"]
  19. Target=cbind(a,b,c,d)
复制代码

报纸
namgalsip 发表于 2014-3-11 12:05:26
  1. nd <- read.table("1.txt", header=T)
  2. col <- paste(nd[,1], nd[,2], nd[,3], sep="")
  3. frecol <- table(col)
  4. finaldata <- nd[(col %in% rownames(frecol[frecol>1]) & nd$type == 1) |  col %in% rownames(frecol[frecol==1]),]
复制代码

地板
jmpamao 发表于 2014-3-11 17:07:11
凑个热闹
#1、是否有重复项
#2、有重复项时,只选type 1
#3、行的排序不改变
######################
HOW TO
#1、给type 排序  1 的放前面,因为不能保证LZ的数据 有重复项时, 1、2...排序。否则第二步即可
#2、删除重复项
#3、恢复行的原来排序

  1. data<-read.table(text="number   id                name        type
  2. 22           123              asd            1
  3. 33           323              sdsd           2
  4. 11           454              ere             1
  5. 11           454              ere             2
  6. 55           565              ass             1
  7. 55           565               ass            2
  8. 77           212               ttt             2
  9. 88            22               ero             1
  10. 33           1234            gfg             1
  11. 33           1234            gfg             2",header=T)
  12. data1<-data[order(data[,4]),]
  13. data2<- data1[!duplicated(data1[,c(1,2,3)]),]
  14. data3<-data2[order(as.numeric(rownames(data2))),]
  15. data3
  16.   
复制代码


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

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