r - 用前一行值填充数据框

标签 r dataframe calculated-columns

我有一个具有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/

相关文章:

r - complete.cases 和 anyNA 没有在行中检测到 NA?

r - 将 tableauViz 抓取到 R 数据帧中

r - Dplyr - 错误 : column '' has unsupported type

Pandas 真假匹配

sql-server - 用于根据另一个日期和外键列添加日期的计算列

python - 在 pandas 数据框中定义不同类型的列

r - 在Rcpp中对命名的数值向量进行排序

r - 使用 ggplot2 如何表示图例中的点和线

python - 接收SettingWithCopyWarning。继续安全吗?

python - 如何在 Pandas DataFrame 中获取符合条件的唯一值?