我有一个具有2列的数据框。
column1中的随机数
column2是我希望column3看起来像什么的位置保留列
random temp
0.502423373 1
0.687594055 0
0.741883739 0
0.445364032 0
0.50626137 0.5
0.516364981 0
...
我想填充column3,以便它接受最后一个非零数字(在本示例中为1或.5),并用该值连续填充以下行,直到命中具有不同数字的行。然后对整个列重复该过程。
random temp state
0.502423373 1 1
0.687594055 0 1
0.741883739 0 1
0.445364032 0 1
0.50626137 0.5 0.5
0.516364981 0 0.5
0.807804708 0 0.5
0.247948445 0 0.5
0.46573337 0 0.5
0.103705154 0 0.5
0.079625868 1 1
0.938928944 0 1
0.677713019 0 1
0.112231619 0 1
0.165907178 0 1
0.836195267 0 1
0.387712998 1 1
0.147737077 0 1
0.439281543 0.5 0.5
0.089013503 0 0.5
0.84174743 0 0.5
0.931738707 0 0.5
0.807955172 1 1
感谢您的所有帮助
最佳答案
在将值“0”设置为na.locf
之后,也许可以使用“zoo”包中的NA
。假设您的data.frame
称为“mydf”:
mydf$state <- mydf$temp
mydf$state[mydf$state == 0] <- NA
library(zoo)
mydf$state <- na.locf(mydf$state)
# random temp state
# 1 0.5024234 1.0 1.0
# 2 0.6875941 0.0 1.0
# 3 0.7418837 0.0 1.0
# 4 0.4453640 0.0 1.0
# 5 0.5062614 0.5 0.5
# 6 0.5163650 0.0 0.5
如果您在“temp”列中的原始
NA
中包含data.frame
值,并且您也想在新生成的“state”列中将它们保留为NA
,则很容易解决。只需再添加一行以重新介绍NA
值:mydf$state[is.na(mydf$temp)] <- NA
关于r - 用前一行值填充数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20416046/