将每个因子的第一个元素转换为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