全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1557 3
2011-08-09
悬赏 50 个论坛币 已解决
程序是根据x的值选择对应的行数据,目的就是对于x值,选择两个零之间数值最大的所对应的行
  n year month day  x
1 1    1     2       1    0
2 2    1     3       3    2
3 3    2     2       2    5
4 4    2     1       4     1
5 5    4     4       5    0
6 6    4     6       6    2
7 7    4     4       7    1
8 8    6     3       2    0
上面的数据经选择过后应该是选择第三行和第六行,然后再将选择的行放入新的数据框。
下边是编的程序,问题主要出在最后t<-NULL上,不知道如何修改,还请高手们指点下,谢谢!
year=c(1,1,2,2,4,4,4,6)
month=c(2,3,2,1,4,6,4,3)
day=c(1,3,2,4,5,6,7,2)
x=c(0,2,5,1,0,2,1,0)
n<-1:8
p=data.frame(n,year,month,day,x)
t<-NULL
m<-NULL
for(k in 1:7)
{if(subset(p$x,p$n==k)==0&&subset(p$x,p$n==k+1)!=0)
    t<-rbind(t,subset(p,p$n==k+1))
else if(subset(p$x,p$n==k)!=0&&subset(p$x,p$n==k+1)!=0)
    t<-rbind(t,subset(p,p$n==k+1))
else if(subset(p$x,p$n==k)!=0&&subset(p$x,p$n==k+1)==0)  
    m<-rbind(m,subset(t,x==max(t$x)))
    t<-NULL
else break}

最佳答案

epoh 查看完整内容

贴出"显现"有误,更正如下: code.txt
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-8-9 21:35:13

贴出"显现"有误,更正如下:

  code.txt

  

code.txt
大小:(546 Bytes)

 马上下载


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-8-11 10:11:07
year=c(1,1,2,2,4,4,4,6)
month=c(2,3,2,1,4,6,4,3)
day=c(1,3,2,4,5,6,7,2)
x=c(0,2,5,1,0,2,1,0)
n<-1:8
p=data.frame(n,year,month,day,x)
p=as.matrix(p)
n=dim(p)[1]
m=dim(p)[2]

zero=which(x==0, arr.ind=TRUE)
n1=length(zero)
index=NA*seq(1:(n1-1))
tmat=matrix(NA,(n1-1),m)
for(i in 1:(n1-1)){
index=zero+which(x[(zero+1):(zero[i+1]-1)]==max(x[(zero+1):(zero[i+1]-1)]), arr.ind=TRUE)
tmat[i,]=p[index,]
}
index
#[1] 3 6
tmat
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    2    2    2    5
[2,]    6    4    6    6    2

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-8-11 14:38:38
epoh 发表于 2011-8-11 10:11
year=c(1,1,2,2,4,4,4,6)
month=c(2,3,2,1,4,6,4,3)
day=c(1,3,2,4,5,6,7,2)
谢谢,程序很好,学习了
我的程序中的问题也找出了
{m<-rbind(m,subset(t,x==max(t$x)))
    t<-NULL}
else t<-t}
再次向您表示感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群