作者ToastCheng (ToastCheng哥)
看板R_Language
标题[问题] 撷取data.frame中的特定资料
时间Tue Jan 13 18:17:50 2015
[问题类型]:
程式谘询(我想用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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.224.80.95
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1421144272.A.DAB.html
1F:推 Edster: 试试!is.na(x) & x > 31; na.omit; 并不能赋值成为 NULL; 01/13 18:56
2F:推 Edster: 若你真要赋值, 则请用 hw2[i,] <- NA 01/13 19:03
3F:推 Carollax: complete.case可以把含有NA的资料删除 01/13 19:31