Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何基于以前的值复制值_R_Function_Replicate - Fatal编程技术网

R 如何基于以前的值复制值

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

如何基于以前的值复制一个值

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    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