如何在数据帧中为每3个其他数据设置NA?

时间:2011-04-21 17:06:54

标签: r

另一个相当基本的问题,我无法在网上找到明确的答案:

假设我有一个像这样的数据集

dat<-c(1,2,3,4,5,6,7,8,9,10)

我想将数据更改为

datnew<-c(1,2,3,NA,NA,NA,7,8,9,NA)

基本上只是在大数据帧中用NA替换每3个数据。

谢谢,

2 个答案:

答案 0 :(得分:10)

通过rep()创建适当的索引:

R> foo <- 1:10
R> foo
 [1]  1  2  3  4  5  6  7  8  9 10
R> ind <- rep(c(FALSE, TRUE), each=3)
R> ind
 [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
R> foo[ind] <- NA
R> foo
 [1]  1  2  3 NA NA NA  7  8  9 NA
R> 

回收可以帮助您,因为您创建的索引会根据数据向量的需要经常应用。

修改:同时在上方显示ind

答案 1 :(得分:0)

我认为有更好的方法,但我错了,正如Dirk指出的那样。下面我修正了我的答案,但是我的答案比Dirk的答案更糟糕。

foo[c(seq(4,length(foo),6),seq(5,length(foo),6),seq(6,length(foo),6))] <- NA

如果它确实是一个数据框,那么你必须指定你想要它的行,并使用另一个命令来获取元素的数量(如dim(dat)[1])。