f*******m 发帖数: 94 | 1 假设我有long form 的数据长成这样:
ID V2 V3 V4 V5
1 -1 0
1 0 2
1 3 1
1 10 1
1 4 3
2 0 4
2 -1 3
2 2 5
2 2 1
3 1 1
3 1 1
3 1 1
3 2 1
...
...
...
请问如果第二列V2中出现小于0或者大于5的情况,怎么样用R或者SAS删除这个ID的所有
信息。平时比较习惯用wide form数据,刚开始接触这种long form的数据,请大家推荐
网页或者书介绍这种long form 数据的处理,非常感谢! |
f*******m 发帖数: 94 | 2 呜呜呜呜,是问题问得不对还是太简单了,板上大牛路过的走过的,帮一下忙呗,是非
常诚心地问这个问题的,挠破头了,也没有想出办法来。 |
k*******a 发帖数: 772 | 3 data a;
input ID V2 V3;
datalines;
1 -1 0
1 0 2
1 3 1
1 10 1
1 4 3
2 0 4
2 -1 3
2 2 5
2 2 1
3 1 1
3 1 1
3 1 1
3 2 1
;
run;
proc sql;
create table b as
select *
from a
where id not in (select distinct id from a where V2 < 0 or V2 >5);
quit; |
k*******a 发帖数: 772 | 4 ID.keep <- names(which(tapply(data$V2, data$ID, function(x) all(x>=0 & x<=5)
)))
data1 <- data[data$ID %in% ID.keep, ] |
D******n 发帖数: 2836 | 5 proc sql;
create table a2 as
select * from a1
group by ID
having sum(V2<0)=0 AND sum(V2>5)=0;
quit;
【在 f*******m 的大作中提到】 : 假设我有long form 的数据长成这样: : ID V2 V3 V4 V5 : 1 -1 0 : 1 0 2 : 1 3 1 : 1 10 1 : 1 4 3 : 2 0 4 : 2 -1 3 : 2 2 5
|
f*******m 发帖数: 94 | 6 谢谢楼上几位,我这就试试看,就想着可能用proc sql可以解决的,但是没有想出来应
该怎么做。 |
f*******m 发帖数: 94 | 7 谢谢kirklander,总以为自己R同的挺好的,看来还需要继续努力。 |
c***z 发帖数: 6348 | |
w******e 发帖数: 1621 | 9 请问这个long和wide对怎么处理数据有什么样的影响?是速度么? |