另一个相当基本的问题,我无法在网上找到明确的答案:
假设我有一个像这样的数据集
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个数据。
谢谢,
答案 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])。