我有年份和降雨量的气象站数据。我正在尝试将某些年份的特定站点转换为降雨的缺失值(NA)。我希望不是该特定站/年份的所有内容都保持降雨量。
我一直在使用ifelse
以指定多个条件并将降雨量指定为NA。但是每次执行此操作时,我的数据帧都会变成一个值,该值就是不是NA的行数。
以下是一些示例数据:
STATION<-c(1,1,1,2,2,2)
YEAR<-c(2000,2001,2002,2000,2001,2002)
RAIN<-c(5,4,3,4,3,5)
df<-cbind(STATION,YEAR,RAIN)
df<-as.data.frame(df)
现在,如果我想要的降雨量是2001年第一站的一部分,那么我将使用以下ifelse语句:
df<-ifelse(df$STATION==1&&df$YEAR==2001,df$RAIN<-"NA",df$RAIN<-df$RAIN)
使用此代码,df的值为5。
我想要得到的是一个看起来像这样的数据框:
STATION YEAR RAIN
[1,] "1" "2000" "5"
[2,] "1" "2001" "NA"
[3,] "1" "2002" "3"
[4,] "2" "2000" "4"
[5,] "2" "2001" "3"
[6,] "2" "2002" "5"
有人知道我在哪里错吗?
作业应在 ifelse
df$RAIN <- ifelse(df$STATION==1 & df$YEAR==2001, NA, df$RAIN)
另外,如果不重复您的'df $',那么包装到里面 with
df$RAIN <- with(df, ifelse(STATION == 1 & YEAR == 2001, NA, RAIN))
df
# STATION YEAR RAIN
#1 1 2000 5
#2 1 2001 NA
#3 1 2002 3
#4 2 2000 4
#5 2 2001 3
#6 2 2002 5
注意:除了赋值外,&&
应当为,&
因为前者仅返回单个TRUE / FALSE作为输出。另外,data.frame(cbind
将列的类型弄乱了,因为cbind
它matrix
首先返回并且matrix
只能有一个类。
NA
不应该被引用。
关于为什么只5
返回,如上所述,&&
返回单个TRUE / FALSE
df$STATION==1&&df$YEAR==2001
#[1] FALSE
在中ifelse
,该no
零件变为活动状态,“ RAIN”的第一个值为5
ifelse(df$STATION==1&&df$YEAR==2001, NA,df$RAIN) # modified syntax related issues
#[1] 5
这将分配给整个列
df <- data.frame(STATION,YEAR,RAIN)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句