将每个因子的第一个元素转换为R中的NA
我有一个数据框,简化如下:将每个因子的第一个元素转换为R中的NA,r,vector,dataframe,subset,na,R,Vector,Dataframe,Subset,Na,我有一个数据框,简化如下: Day Place dendrometer max 1 1 1 4684 2 1 1 4831 1 1 2 2486 2 1 2 2596 1 2 1 6987 2 2 1 6824 我需要每个树状计的第一个元素为NA,因此每次R计算新树状计的“max”(独立于位置),都从NA开始,如下所示: Day Place dendrom
Day Place dendrometer max
1 1 1 4684
2 1 1 4831
1 1 2 2486
2 1 2 2596
1 2 1 6987
2 2 1 6824
我需要每个树状计的第一个元素为NA,因此每次R计算新树状计的“max”(独立于位置),都从NA开始,如下所示:
Day Place dendrometer max
1 1 1 NA
2 1 1 4831
1 1 2 NA
2 1 2 2596
1 2 1 NA
2 2 1 6824
您还可以让我知道我可以计算每个环内每个树状计(sapply,aggregate?)的最大列平均值,而不是计算整个最大列的平均值吗?
注:dendro 1 in place 1与dendro 1 in place 2不同,我需要每个不同的信息您是否总是在一个位置仅对一个树状计进行两次测量?如果是这样,则可以将其他每一个值设置为NA:
#x is your data.frame
x<-read.table("clipboard",header=TRUE)
x[seq(1,nrow(x),by=2),4]<-NA
如果您的数据更复杂,这应该可以:
dup<-duplicated(x[,2:3]) #find the non-unique cases
x[!dup,4]<-NA #set the first measurements as NA
tapply(x[dup,4],which(dup),max) #compute max from others.
dup你总是在一个地方对一个树状计进行两次测量吗?如果是这样,则可以将其他每一个值设置为NA:
#x is your data.frame
x<-read.table("clipboard",header=TRUE)
x[seq(1,nrow(x),by=2),4]<-NA
如果您的数据更复杂,这应该可以:
dup<-duplicated(x[,2:3]) #find the non-unique cases
x[!dup,4]<-NA #set the first measurements as NA
tapply(x[dup,4],which(dup),max) #compute max from others.
dup
使用的样本数据:
使用的样本数据:
首先,可以使用tapply
计算max
的平均值
dat <- transform(dat,
mean = tapply(max, c(0, cumsum(abs(diff(dendrometer)))), mean))
Day Place dendrometer max mean
1 1 1 1 4684 4757.5
2 2 1 1 4831 2541.0
3 1 1 2 2486 6905.5
4 2 1 2 2596 4757.5
5 1 2 1 6987 2541.0
6 2 2 1 6824 6905.5
首先,可以使用tapply
计算max
的平均值
dat <- transform(dat,
mean = tapply(max, c(0, cumsum(abs(diff(dendrometer)))), mean))
Day Place dendrometer max mean
1 1 1 1 4684 4757.5
2 2 1 1 4831 2541.0
3 1 1 2 2486 6905.5
4 2 1 2 2596 4757.5
5 1 2 1 6987 2541.0
6 2 2 1 6824 6905.5
为什么需要NA值?什么是环
基本上你在“我需要每个树状计的第一个元素为NA”之后写的东西对我来说毫无意义。你为什么需要NA值?什么是环
基本上,你在“我需要每个树状计的第一个元素为NA”之后写的任何东西对我来说都没有任何意义。我认为当我有两天以上的时间阅读每个树状计时,这不起作用。这是我的数据集的简化。真正的数据集每天有数千天,数百个读数和树状计。不,不,不,我认为你是对的,这将帮助我解决我的问题。谢谢我想当我有超过两天的时间阅读每一个树形计时,这是行不通的。这是我的数据集的简化。真正的数据集每天有数千天,数百个读数和树状计。不,不,不,我认为你是对的,这将帮助我解决我的问题。谢谢数据要复杂得多,但我明白你的意思,你的例子的一个变体可能会起作用。谢谢数据要复杂得多,但我明白你的意思,你的例子的一个变体可能会起作用。谢谢
dat <- transform(dat,
mean = tapply(max, c(0, cumsum(abs(diff(dendrometer)))), mean))
Day Place dendrometer max mean
1 1 1 1 4684 4757.5
2 2 1 1 4831 2541.0
3 1 1 2 2486 6905.5
4 2 1 2 2596 4757.5
5 1 2 1 6987 2541.0
6 2 2 1 6824 6905.5
is.na(dat$max) <- c(TRUE, diff(dat$dendrometer) != 0)
Day Place dendrometer max mean
1 1 1 1 NA 4757.5
2 2 1 1 4831 2541.0
3 1 1 2 NA 6905.5
4 2 1 2 2596 4757.5
5 1 2 1 NA 2541.0
6 2 2 1 6824 6905.5