R 如何基于以前的值复制值
如何基于以前的值复制一个值 e、 g 我的数据集R 如何基于以前的值复制值,r,function,replicate,R,Function,Replicate,如何基于以前的值复制一个值 e、 g 我的数据集 name <- c("sergio",NA,NA,NA,NA,"John", NA,NA,NA,NA,NA,NA) number <-c(1234,NA,NA,NA,NA,5678, NA,NA,NA,NA,NA,NA) mydata <- cbind(as.data.frame(name),as.data.frame(number)) name number sergio 1234 sergio 123
name <- c("sergio",NA,NA,NA,NA,"John", NA,NA,NA,NA,NA,NA)
number <-c(1234,NA,NA,NA,NA,5678, NA,NA,NA,NA,NA,NA)
mydata <- cbind(as.data.frame(name),as.data.frame(number))
name number
sergio 1234
sergio 1234
sergio 1234
sergio 1234
John 5678
John 5678
John 5678
John 5678
John 5678
John 5678
....
etc您可以使用“动物园”软件包中的
na.locf
:
mydata您可以使用“zoo”软件包中的na.locf
:
mydata您还可以使用简单的自制功能:
copydown <- function(x) {
for(iii in seq_along(x)[-1]) if(is.na(x[iii])) x[iii]<- x[iii-1]
x
}
> copydown(name)
# [1] "sergio" "sergio" "sergio" "sergio" "sergio" "John" "John" "John"
# [9] "John" "John" "John" "John"
mydata[] <- lapply(mydata, copydown)
# notice [] -- so the result will be a data frame rather than a list
copydown您还可以使用简单的自制功能:
copydown <- function(x) {
for(iii in seq_along(x)[-1]) if(is.na(x[iii])) x[iii]<- x[iii-1]
x
}
> copydown(name)
# [1] "sergio" "sergio" "sergio" "sergio" "sergio" "John" "John" "John"
# [9] "John" "John" "John" "John"
mydata[] <- lapply(mydata, copydown)
# notice [] -- so the result will be a data frame rather than a list
copydown Thaks非常亲爱@shasj,没问题。要考虑投票的答案(如果它是有用的)和/或(如果它解决了你的问题)。shasj,没问题。要考虑投票的答案(如果它是有用的)和/或(如果它解决了你的问题)。
copydown <- function(x) {
for(iii in seq_along(x)[-1]) if(is.na(x[iii])) x[iii]<- x[iii-1]
x
}
> copydown(name)
# [1] "sergio" "sergio" "sergio" "sergio" "sergio" "John" "John" "John"
# [9] "John" "John" "John" "John"
mydata[] <- lapply(mydata, copydown)
# notice [] -- so the result will be a data frame rather than a list