[问题] 撷取data.frame中的特定资料

楼主: ToastCheng (ToastCheng哥)   2015-01-13 18:17:50
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
新手(没写过程式,R 是我的第一次)
[问题叙述]:
各位大大好,小弟在做coursera的作业时有一题要求把
一个给定的data.frame(叫做airquality)中某两个向
量(Ozone和Temp)分别大于31和90时的第三个向量Solar.R
的平均值是多少?
后来我有发现可以用:
attach(data)
sub <- subset(data,Ozone > 31 & Temp > 90)
summary(sub)
的方式求出Solar.R在符合上述两个条件之下的平均值。
但一开始只是直觉地想要用for loop暴力算,但没成功,
想问板上是否可以用循环的方式算出来?以下是自己尝试
的程式码,附带一提:
data[,1]是Ozone
data[,2]是Solar.R
data[,4]是Temp
[程式范例]:
add <- 0
count <- 0
for(i in 1:153){
if(data[i,1]>31 & data[i,4]>90)
add <- add + data[i,2] #把符合条件的Temp值累加
count <- count + 1
}
mean <- add/count
这里遇到的问题是data[,1]含有NA值,所以我想把有NA值
的资料删掉,于是先跑这个for loop:
for(i in 1:153){
if(is.na(hw2[i,1]))
hw2[i,] <- NULL
}
结果:
错误在`[<-.data.frame`(`*tmp*`, i, , value = NULL) :
replacement has 0 items, need 6
不知道是类型不一样,NULL不能随便套用还是其他原因,
总之先感谢各位大大把这篇看完QQ
作者: Edster (Edster)   2015-01-13 18:56:00
试试!is.na(x) & x > 31; na.omit; 并不能赋值成为 NULL;若你真要赋值, 则请用 hw2[i,] <- NA
作者: Carollax (更更)   2015-01-13 19:31:00
complete.case可以把含有NA的资料删除

Links booklink

Contact Us: admin [ a t ] ucptt.com