r - 填充索引值上方和下方的选择行
问题描述
在 R 中工作时遇到问题
我在数据框(df)中有一个变量(X),看起来像这样
df$X
NA
12345
NA
NA
32409
NA
NA
NA
NA
NA
04598
NA
NA
NA
我需要执行以下操作:
如果 X 不是 NA,则替换:
- X 中的前一行用该值
- 填写其余行,直到达到下一个值
最终,它需要看起来像这样
df$X
12345
12345
12345
32409
32409
32409
32409
32409
32409
04598
04598
04598
04598
04598
我尝试使用 for 循环来完成第一部分(填写上一行),但似乎无法让它工作
for (x in df$X) {
x = df$X[x]
y = x -1
df$X[y] <- ifelse(!is.na(x), x, NA)
}
非常感谢您的帮助!
解决方案
这是一种使用dplyr
and的方法tidyr
:
library(dplyr)
df2 <- df %>%
mutate(X = if_else(is.na(X), lead(X), X)) %>%
tidyr::fill(X)
推荐阅读
- r - pdftools 包无法解析字符
- python - 展平数据框
- python - choropleth() 在 folium 0.5.0 上得到了一个意想不到的关键字参数“bins”
- python - Alpha vantage AAPL 价格与其他数据源不一致
- java - 具有名为 Item 的类的 Arraylist
- html - 为什么定义给类的样式不能在元素?
- adobe - 如何在 adobe xd 中打开链接?
- postgresql - PostgreSQL 上的 JdbcChannelMessageStore 性能问题
- python - 为什么使用 datetime.striptime() 为 matplotlib 转换日期不显示整个日期
- html - 如何为我的输入获得一个中间位置并且跨度在左侧